我使用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文件?
答案 0 :(得分:2)
Commons CLI在运行时不在类路径中。如果您努力使类路径正确,您可以尝试将应用程序打包为包含其所有依赖项的单个大jar文件,包括Commons CLI。有很多工具可以实现(jarjar,onejar,Maven shade plugin ...)