我正在尝试使用log4j将日志打印到日志文件中。它完美地运作。但是当我将项目导出为jar文件并运行它时,我收到错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at com.mkyong.HelloExample.<clinit>(HelloExample.java:7)
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)
项目结构如下https://www.mkyong.com/logging/log4j-hello-world-example/
有人可以帮忙吗?
答案 0 :(得分:0)
科西嘉。您的问题是您需要在执行时包含log4j.jar
库。您可以通过以下两种方式之一完成:
手动:如果在Eclipse中运行jar,则执行Run As&gt;就足够了。运行配置...&gt; classpath&gt;添加JARS(或外部JAR)并选择log4j.jar
。
自动:在META-INF/MANIFEST.MF
文件中包含类路径声明:
Class-Path: log4j.jar
(参见Oracle documentation)。
这种方式的优点是,即使执行Eclipse,您也不必在执行时包含库。但请记住将log4.jar
与您自己的jar一起分发。