簡體   English   中英

運行jar文件時拋出java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError thrown when running jar file

我試圖在Mac上運行我的jar文件(還沒有嘗試過任何其他平台)。 當我使用java -jar MyApp.jar運行時,我收到以下錯誤

堆棧跟蹤:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at tabalchi.MyLogger.getLogger(MyLogger.java:51)
at tabalchiApp.TabalchiApp.printSystemProps(TabalchiApp.java:117)
at tabalchiApp.TabalchiApp.main(TabalchiApp.java:37)

所以,正如你所看到的那樣,主類是被認可的。 這是清單文件。 --->

Manifest-Version: 1.0
Class-Path: . jars/log4j-1.2.16.jar jars/jfugue-4.1.0-20120125.jar jars/gervill.jar jars/AppleJavaExtensions.jar  
Main-Class: tabalchiApp.TabalchiApp
SplashScreen-Image: tabalchiApp/resources/splash.png

<---和jar文件中的文件夾結構如下。 --->

META-INF/MANIFEST.MF
jars/AppleJavaExtensions.jar
jars/gervill.jar
jars/jfugue-4.1.0-20120125.jar
jars/log4j-1.2.16.jar
tabalchiApp/TabalchiApp.class   <-- this is the main class
tabalchiApp/otherClasses.....class

<---

我已閱讀很多關於運行.jar文件的帖子,但沒有一個解決方案對我有用。 我真的很感謝你對這個的幫助。

我是通過從eclipse導出來創建jar文件的。 如果我導出到可運行的jar文件,那么我無法控制清單文件的制作。 我需要在清單文件中添加啟動圖像。 我對runnable jar export有一些其他問題。 因此這條道路。

看來, log4j是missing.it期待jars/log4j-1.2.16.jar在類路徑中。

jars/log4j-1.2.16 

應該在文件夾結構下。

 jars/log4j-1.2.16.jar

您要在哪個目錄中使用:java -jar MyApp.jar

您可以在類路徑中指定包/目錄以確保找到它們。

好的,所以根據這個鏈接,

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

Class-Path標頭指向本地網絡上的類或JAR文件,而不是JAR文件中的JAR文件或可通過Internet協議訪問的類。 要將JAR文件中的JAR文件中的類加載到類路徑中,必須編寫自定義代碼來加載這些類。 例如,如果MyJar.jar包含另一個名為MyUtils.jar的JAR文件,則不能使用MyJar.jar清單中的Class-Path標頭將MyUtils.jar中的類加載到類路徑中。

所以,似乎我不能在我的jar文件中包含其他jar文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM