我的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文件夾完全沒有使用。
如果沒記錯的罐子,我認爲應該有你的JAR中的manifest.xml文件。它應該包含您的依賴項的列表。 – npinti
@nixgeek在'MANIFEST.xml'中列出你所有的JAR依賴關係。 –
那個jar到底是在主jar裏面?這不是類路徑加載的工作方式,除非有一些底層的非標準機制首先提取依賴關係。 – Gimby