我正在使用 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/