errores de Apache Commons CLI DefaultParser NoSuchMethod

anon:

Consigo un Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.hasShortOption(Ljava/lang/String;)Zmientras yo estoy tratando de crear una instancia de DefaultParser.

Mi código:

    Options options = new Options();
    // option for day offset
    options.addOption(new Option("d", "day", true, "Day offset. -d 7 will 
    request for last weeks data"));
    //options.addOption("d", "day", true, "Day offset. -d 7 will request for last weeks data");

    CommandLineParser parser = new DefaultParser();
    CommandLine cmd = parser.parse(options, args);

StackTrace:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.hasShortOption(Ljava/lang/String;)Z
    at org.apache.commons.cli.DefaultParser.handleShortAndLongOption(DefaultParser.java:491)
    at org.apache.commons.cli.DefaultParser.handleToken(DefaultParser.java:243)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:120)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:76)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:60)
    at domain.Main.main(Main.java:60)

La línea 60 es la siguiente:

    CommandLine cmd = parser.parse(options, args);

Estaba siguiente documentación oficial de Apache - https://commons.apache.org/proper/commons-cli/usage.html .

Si la biblioteca se puede encontrar dentro de la jarra.

Intentado correr un par de combinaciones, que ninguno de ellos realmente trabajó. En el lado positivo me ha dado un error diferente. Mas o menos.

StackTrace # 2

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.getMatchingOptions(Ljava/lang/String;)Ljava/util/List;
    at org.apache.commons.cli.DefaultParser.handleLongOptionWithoutEqual(DefaultParser.java:404)
    at org.apache.commons.cli.DefaultParser.handleLongOption(DefaultParser.java:384)
    at org.apache.commons.cli.DefaultParser.handleToken(DefaultParser.java:239)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:120)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:76)
    at org.apache.commons.cli.DefaultParser.parse(DefaultParser.java:60)
    at domain.Main.main(Main.java:61)
DPR:

Eso es avro-tools-1.8.2.jartrae su propia versión de commons-clique entre en conflicto con la versión que desea utilizar.

De acuerdo con el META-INF\DEPENDENCIESarchivo de avro-tools-1.8.2.jarlo que parece ser la versión 1.2.

Básicamente, usted tiene tres opciones:

  1. Utilizar la misma versión de la commons-clique se ha utilizado por avro-tools-1.8.2.jar. Es decircommons-cli-1.2
  2. Asegúrese de que su versión de commons-cliestá en la ruta de clase antesavro-tools-1.8.2.jar
  3. Volver a pensar en la necesidad de utilizar avro-toolsy eliminar la dependencia si no es realmente necesario.

Si realmente necesita avro-toolsla primera opción podría ser el camino a seguir. La opción segundos, probablemente se solucionará el problema en el primer lugar, pero podría romper la funcionalidad de avro-toolsdebido a la versión 1.4 de conflicto commons-clise usará eso. Si realmente no necesita avro-tools(no estamos hablando de avro, pero el toolsfrasco específicamente) Me gustaría recomendar para eliminar la avro-toolsdependencia. avro-toolsno parece ser adecuado para ser tirado como dependencia pero es más una aplicación independiente. No haces un montón de bibliotecas externas para que todos puedan llegar a causar conflictos de versión de su lado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=138360&siteId=1
Recomendado
Clasificación