java.lang.NoClassDefFoundError:org/apache/commons/cli/ParseException

新手上路,请多包涵

我想将 apache cli 添加到我的应用程序,但我遇到了问题。当我尝试运行它时会显示这些错误:

 Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 7 more

这是我的代码:

 CommandLineParser parser = new PosixParser();
Options options = new Options();
options.addOption("a", "abc", true, "First parameter");

try {
    CommandLine commandLine = parser.parse(options, args);
    System.out.println(commandLine.getOptionValue("a"));
} catch (ParseException e1) {
    e1.printStackTrace();
}

我还在 pom.xml 中添加了这个:

 <dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.2</version>
</dependency>

但这无济于事:/我还先手动添加了 commons-cli-1.3.1.jar,然后再添加了 commons-cli-1.2.jar,但两者都无济于事。

@编辑

附言。我将其作为“java -jar filename.jar”运行。

原文由 Marek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
1 个回答

只需几分钟的更改,我就可以执行此代码:-

     CommandLineParser parser = new PosixParser();
    Options options = new Options();
    options.addOption("a", true, "First parameter");
    args=new String[]{"-a abc"};

    try {
        CommandLine commandLine = parser.parse(options, args );
        System.out.println(commandLine.getOptionValue("a"));
    } catch (ParseException e1) {
        e1.printStackTrace();
    }

Output :-  abc

在我的 pom.xml 中:-

   <dependency>
    <groupId>commons-cli</groupId>
    <artifactId>commons-cli</artifactId>
    <version>1.2</version>
  </dependency>

commons-cli-1.2.jar 对您的代码不可见。

原文由 Amit Bhati 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题