2012-06-18 219 views
1

我想在Mac上運行我的jar文件(還沒有在任何其他平臺上試過)。當我運行使用Java的罐子MyApp.jar我收到以下錯誤當運行jar文件時拋出java.lang.NoClassDefFoundError

堆棧跟蹤:

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文件,那麼我無法控制清單文件的製作。我需要在清單文件中添加splash圖像。而我在運行jar導出時遇到了一些其他問題。因此,這條道路。

+1

您需要將log4j放入您的類路徑中 –

+0

使用maven構建可運行jar包。這很簡單! – Ilya

+0

你能夠從IDE運行你的代碼嗎? –

回答

4

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

jars/log4j-1.2.16 

應該在文件夾結構下。

jars/log4j-1.2.16.jar 
+0

對不起,這是我的一個錯字。它實際上是jars目錄中的log4j-1.2.16.jar。 – Poorav

0

在哪個目錄,你想使用: Java的罐子MyApp.jar

您可以指定在classpath中包/目錄,以確保他們被發現。

+0

該jar文件在桌面上。我從桌面運行這個。 – Poorav

0

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

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

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

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

相關問題