2015-04-04 126 views
0

我有以下文件夾結構...如何將log4j.properties和log4j.jar添加到可執行文件jar ..?

MyApp 
     |com 
     |lib 
      |--- log4j-1.2.17.jar,mysqlconn.jar,jcalendar-1.4.jar,poi-3.9.jar 
     |prop 
      |---log4j.properties 
     |manifest.txt 

manifest.txt:

Main-Class: com.java.test.WelcomeScreen 
Class-Path: prop lib/jcalendar-1.4.jar lib/log4j-1.2.17.jar lib/mysql-connector-java-5.0.8-bin.jar lib/poi-3.9.jar 

我創建可執行的JAR文件如下:

C:\Users\Administrator\Desktop\MyApp>jar -cvfm myapp.jar manifest.txt com/java/test/*.class com/java/db/*.class 

,然後運行:

C:\Users\Administrator\Desktop\MyApp>java -jar myapp.jar 

我收到以下錯誤:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger 
     at com.java.test.LoginForm.<clinit>(LoginForm.java:17) 
     at com.java.test.WelcomeScreen.main(WelcomeScreen.java:134) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     ... 2 more 
+0

不應該包含'log4j-1.2.15.jar'而不是'log4j-1.2.17.jar'? – Neo 2015-04-04 07:42:17

+0

對不起,這是錯字錯誤 – 2015-04-04 07:45:40

+0

我需要在manifest.txt中給「prop/log4.properties」而不是「prop」嗎? – 2015-04-04 07:51:52

回答

0

您需要在清單的末尾添加一個空行。 也只是包括目錄很好,您的log4j.properties存在。 我打算建議將log4.properties放在與主jar文件相同的路徑中,並添加「。」。到類路徑。但看起來像添加一個/到OP找到的目錄的結尾。

+0

我可以在manifest.txt中存儲絕對路徑的jar文件和log4.properties,這樣可以將任意位置的jar文件保存在任何地方,用戶只需雙擊即可啓動應用程序? – 2015-04-08 16:12:27