ano*_*non 8 java apache-commons-cli
我有一段Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.cli.Options.hasShortOption(Ljava/lang/String;)Z时间试图创建一个实例DefaultParser.
我的代码:
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);
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
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)
Run Code Online (Sandbox Code Playgroud)
第60行是这样的:
CommandLine cmd = parser.parse(options, args);
Run Code Online (Sandbox Code Playgroud)
我刚刚关注官方的apache文档 - https://commons.apache.org/proper/commons-cli/usage.html.
是的,可以在jar中找到该库.
尝试运行几个组合,这些组合都没有真正起作用.从好的方面来说,我得到了一个不同的错误.的种类.
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)
Run Code Online (Sandbox Code Playgroud)
那是avro-tools-1.8.2.jar它自己的版本commons-cli与您要使用的版本冲突。
根据它META-INF\DEPENDENCIES的文件avro-tools-1.8.2.jar似乎是1.2版本。
基本上你有三个选择:
commons-cli使用与 正在使用的版本相同的版本avro-tools-1.8.2.jar。IEcommons-cli-1.2commons-cli之前位于类路径中avro-tools-1.8.2.jaravro-tools如果不需要,则删除依赖项。如果您确实需要avro-tools第一个选项可能是正确的选择。秒选项可能会首先解决问题,但可能会破坏功能,因为将使用avro-tools冲突的 1.4 版本。commons-cli如果您真的不需要avro-tools(不是谈论avro而是tools具体谈论 jar),我建议删除avro-tools依赖项。avro-tools似乎不适合作为依赖项拉取,而更像是一个独立的应用程序。它捆绑了一堆外部库,所有这些库最终都可能会导致您这边的版本冲突。
| 归档时间: |
|
| 查看次数: |
1021 次 |
| 最近记录: |