我有一个项目,其结构如下:
root/
-- lib/
---- commons-cli-1.2.jar
-- src/
---- my/package/name/*.java
-- bin/
---- my/package/name/*.class
-- .classpath
-- .project
-- manifest.mf
*.class
文件位于 bin/
由 Eclipse 每个构建完成。我的.classpath
有lib/
包含并编译得很好;它也可以作为“Java 应用程序”运行,与我当前的 stub 很好地配合。
当我尝试创建 JAR 并包含 lib/
时,就会出现此问题依赖关系。从我一直发出的命令行:
jar cvfm prog.jar manifest.mf -C bin/ .
程序构建,然后当我尝试运行 java -jar prog.jar
时,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/Option...
(还有更多,但我无法从另一台机器复制)
我的manifest.mf
看起来像:
Manifest-Version: 1.0
Main-Class: my.package.Main
Class-Path: ./lib/commons-cli-1.2.jar
在我看来,Class-Path
未包含在内,并且 JAR 找不到 commons-cli-1.2.jar
中包含的类。我已将其与 JAR 创建隔离,因为我可以毫无问题地运行已编译的类。
创建 JAR 并包含 lib/*.jar
时我做错了什么?
最佳答案
我之前在 list 文件中指定类路径时遇到过问题。如果我是您,我会跳过在 list 文件中引用所需的库,而是将它们直接包含在您的 jar 中。 Eclipse 可以让您轻松地做到这一点 link
关于java - jar 抛出 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47517622/