Java:使用Apache Commons CLI 1.2时出现NoClassDefFoundError错误

3

我正在使用Apache Commons CLI 1.2来解析Java中的命令行参数。当尝试运行我的Java类时,我遇到了NoClassDefFoundError错误,但通过修复类路径问题,我已经解决了它。

现在我遇到了相同的异常,但是与实际的commons-cli类有关,如下所示:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cl i/CommandLineParser Caused by:
    java.lang.ClassNotFoundException: org.apache.commons.cli.CommandLineP arser
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class:  com.amirsys.score.api.script.CMDContentPusher.

我能想到的唯一方法就是将类路径设置为commons-cli jar,但这并没有起作用。我还没有找到解决导入的类的NoClassDefFoundError问题的方法。我以为这些都编译进了.class文件里?


这可能会有用:https://dev59.com/_3M_5IYBdhLWcg3wQQpd - Jeremy Goodell
你要怎样运行这个应用程序?看起来 commons-cli 不在类路径中... - centic
我试图从Windows命令行运行它。那么,我在我的初始参数中也要添加commons-cli的类路径吗?我有一种可怕的感觉,我将迷失在类路径配置的纱线球中...是否有更简单的方法? - S.B
1个回答

3

在运行时,Commons CLI不在类路径中。如果您难以正确获取类路径,则可以尝试将应用程序打包为一个单独的大型JAR文件,其中包含所有依赖项,包括Commons CLI。有很多工具可以实现这一点(例如jarjar、onejar、Maven shade插件...)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接