Java:使用Apache Commons CLI 1.2的NoClassDefFoundError

时间:2012-05-30 00:22:03

标签: java exception noclassdeffounderror apache-commons-cli

我使用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文件?

1 个答案:

答案 0 :(得分:2)

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