Java:NoClassDefFoundError 使用 Apache Commons CLI 1.2

标签 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 文件中了?

最佳答案

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

关于Java:NoClassDefFoundError 使用 Apache Commons CLI 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10808513/

相关文章:

java - onPostExecute 不会在 AsyncTask Android 上被调用

成员函数的Java内存分配

java - 如何让代码仅在抛出异常时运行?

java - NoClassDefFoundError与gradle,giraph和hadoop

android - 旧版 Android SDK 上的 java.lang.NoClassDefFoundError

java - 嵌套对象的 Spring JSON 数据绑定(bind)不起作用

java - 从常量 java 文件将值注入(inject)到 spring bean 中

c++ - 如果 delete[] p 失败会发生什么?

java - 如何将 XML 配置转换为 Java

java - 将 maven 项目添加为 java 中非 maven 的依赖项时,没有 ClassDefFound 错误