如何将 log4j.properties 和 log4j.jar 添加到可执行 jar..?
How to add log4j.properties and log4j.jar to executable 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.run(Unknown Source)
at java.net.URLClassLoader.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
您需要在清单末尾添加一个空行。
在 log4j.properties
存在的地方也可以只包含目录。
我打算建议将 log4.properties 放在与主 jar 文件相同的路径中并添加“。”到 Class-路径。但是看起来像在目录末尾添加一个 /
就像 OP 找到的那样。
我有以下文件夹结构...
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.run(Unknown Source)
at java.net.URLClassLoader.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
您需要在清单末尾添加一个空行。
在 log4j.properties
存在的地方也可以只包含目录。
我打算建议将 log4.properties 放在与主 jar 文件相同的路径中并添加“。”到 Class-路径。但是看起来像在目录末尾添加一个 /
就像 OP 找到的那样。