在jar中找不到依赖库

时间:2015-12-29 07:55:19

标签: java netbeans ant jar classpath

我的java项目使用javax.mail.jar。因此,在netbeans中,我创建了一个新的文件夹Libraries,将jar文件复制到那里并将其添加到项目属性中。我将此文件夹添加到git,这在netbeans上运行良好。但是当我在另一台机器上使用ant构建项目并使用

运行项目jar时
java -jar myproject.jar

我收到错误

  

线程“main”中的异常java.lang.NoClassDefFoundError:   的javax /邮件/ MessagingException

我可以看到myproject.jar包含依赖库

$jar tf TakServer.jar
  

库/

     

库/ javax.mail.jar

     

...

我不确定出了什么问题。知道如何让它运行吗?

解决方案:正如@Gimby指出的那样,来自Netbeans和ant build的jar文件是不同的。 Netbeans包含一个lib /文件夹,其中包含dist /文件夹中的所有依赖项,其MANIFEST.ML将lib /添加到classpath。根本没有使用主jar中的Libraries文件夹。

1 个答案:

答案 0 :(得分:0)

清单中的ClassPath指向jar外部的文件系统。 它不可能在罐子里面使用罐子

https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html