2015-12-29 83 views
0

我的java项目使用javax.mail.jar。所以,在netbeans中,我创建了一个新的文件夹Libraries,将jar文件复制到那里,并将其添加到项目属性中。我将这个文件夹添加到git中,并且在netbeans上运行的很好。但是,当我生成项目与另一台机器上的蚂蚁并运行在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文件夹完全没有使用。

+0

如果没记错的罐子,我认为应该有你的JAR中的manifest.xml文件。它应该包含您的依赖项的列表。 – npinti

+0

@nixgeek在'MANIFEST.xml'中列出你所有的JAR依赖关系。 –

+1

那个jar到底是在主jar里面?这不是类路径加载的工作方式,除非有一些底层的非标准机制首先提取依赖关系。 – Gimby

回答