在jar中找不到依赖库
Can't find dependent libraries in jar
我的 java 项目使用 javax.mail.jar。因此,在 netbeans 中,我创建了一个新文件夹 Libraries,将 jar 文件复制到那里并将其添加到项目属性中。我将这个文件夹添加到 git 并且这个 运行 在 netbeans 上很好。但是当我在另一台机器上用 ant 构建项目并且 运行 项目 jar 与
java -jar myproject.jar
我收到错误
Exception in thread "main" java.lang.NoClassDefFoundError:
javax/mail/MessagingException
我可以看到myproject.jar包含依赖库
$jar tf TakServer.jar
Libraries/
Libraries/javax.mail.jar
...
我不确定出了什么问题。知道如何让它达到 运行 吗?
解决方案:正如@Gimby 所指出的,Netbeans 和 ant build 的 jar 文件是不同的。 Netbeans 包含一个 lib/ 文件夹,其中包含 dist/ 文件夹中的所有依赖项,并且它的 MANIFEST.ML 将 lib/ 添加到类路径中。主 jar 中的 Libraries 文件夹根本没有使用。
清单中的ClassPath 指向jar 外部的文件系统。
不可能在罐子里使用罐子
https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
我的 java 项目使用 javax.mail.jar。因此,在 netbeans 中,我创建了一个新文件夹 Libraries,将 jar 文件复制到那里并将其添加到项目属性中。我将这个文件夹添加到 git 并且这个 运行 在 netbeans 上很好。但是当我在另一台机器上用 ant 构建项目并且 运行 项目 jar 与
java -jar myproject.jar
我收到错误
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/MessagingException
我可以看到myproject.jar包含依赖库
$jar tf TakServer.jar
Libraries/
Libraries/javax.mail.jar
...
我不确定出了什么问题。知道如何让它达到 运行 吗?
解决方案:正如@Gimby 所指出的,Netbeans 和 ant build 的 jar 文件是不同的。 Netbeans 包含一个 lib/ 文件夹,其中包含 dist/ 文件夹中的所有依赖项,并且它的 MANIFEST.ML 将 lib/ 添加到类路径中。主 jar 中的 Libraries 文件夹根本没有使用。
清单中的ClassPath 指向jar 外部的文件系统。 不可能在罐子里使用罐子
https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html