3

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

现在我有同样的例外,但关于实际的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 文件?

4

1 回答 1

3

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

于 2013-04-09T11:30:24.803 回答