gpt4 book ai didi

java - Apache Commons CLI DefaultParser NoSuchMethod 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:35:23 26 4
gpt4 key购买 nike

当我尝试创建 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);

堆栈跟踪:

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)

第 60 行是这样的:

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

我只是在关注官方的 apache 文档 - https://commons.apache.org/proper/commons-cli/usage.html .

是的,可以在 jar 中找到该库。

尝试运行更多组合,但没有一个真正起作用。从好的方面来说,我得到了一个不同的错误。有点。

堆栈跟踪 #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)

最佳答案

那是 avro-tools-1.8.2.jar 带来了它自己的 commons-cli 版本,它与您要使用的版本冲突。

根据 avro-tools-1.8.2.jarMETA-INF\DEPENDENCIES 文件,它似乎是 1.2 版本。

基本上你有三个选择:

  1. 使用 avro-tools-1.8.2.jar 使用的相同版本的 commons-cli。 IE。 commons-cli-1.2
  2. 确保您的 commons-cli 版本在 avro-tools-1.8.2.jar 之前的类路径中
  3. 重新考虑使用 avro-tools 的必要性,如果确实不需要,则移除依赖项。

如果您真的需要 avro-tools,第一个选项可能是最佳选择。 seconds 选项可能会首先解决问题,但可能会破坏 avro-tools 的功能,因为将使用 commons-cli 的 1.4 版冲突。如果你真的不需要 avro-tools(不是说 avro 而是 tools jar)我建议删除 avro-tools 依赖项。 avro-tools 似乎不适合作为依赖项被拉取,而是更像是一个独立的应用程序。它捆绑了一堆外部库,所有这些都可能最终导致您这边的版本冲突。

关于java - Apache Commons CLI DefaultParser NoSuchMethod 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com