【问题标题】:log4j: Write to a log file with a jarlog4j:使用 jar 写入日志文件
【发布时间】:2016-10-15 08:48:03
【问题描述】:

我正在尝试使用 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/

有人可以帮忙吗?

【问题讨论】:

    标签: java eclipse jar log4j


    【解决方案1】:

    当然。您的问题是执行时需要包含log4j.jar 库。您可以通过以下两种方式之一进行:

    • 手动:如果在 Eclipse 中运行 jar,执行 Run As > Run Configurations... > classpath > Add JARS(或外部 JAR)并选择 log4j.jar 就足够了。

    • 自动:在META-INF/MANIFEST.MF 文件中包含一个类路径声明:

      Class-Path: log4j.jar

    (见Oracle documentation)。

    这种方式的优点是您不必在执行时包含库,即使在 Eclipse 之外执行时也是如此。但请记住将 log4.jar 与您自己的 jar 一起分发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多