【问题标题】:ClassNotFoundException found in Log4j 2.0在 Log4j 2.0 中发现 ClassNotFoundException
【发布时间】:2012-11-09 13:15:51
【问题描述】:

我已经为 log4j12-api-beta2.jar 设置了构建路径,但它提供了 以下错误请帮我解决这个问题
我的代码如下 java文件:

package com.sst.log4j;

 class Product {
private int productId;
private String productName;
public int getProductId() {
    return productId;
}
public void setProductId(int productId) {
    this.productId = productId;
}
public String getProductName() {
    return productName;
}
public void setProductName(String productName) {
    this.productName = productName;
}
public Product(int productId, String productName) {
    super();
    this.productId = productId;
    this.productName = productName;
}



 }

我的 Main() 文件是:

 package com.sst.log4j;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

public class ProductMain {

/**
 * @param args
 */
static Logger log=LogManager.getLogger(Product.class.getName());
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Product p1=new Product(1,"garlands");
    System.out.println(p1.getProductName());
    log.error(p1.getProductName());

}

}

它给出了以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/
 log4j/LogManager
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.apache.log4j.LogManager.getLogger(LogManager.java:38)
at com.sst.log4j.ProductMain.main(ProductMain.java:14)
    Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.LogManager
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
... 14 more

【问题讨论】:

    标签: java log4j


    【解决方案1】:

    我刚刚从这里下载了 log4j 2.0:http://logging.apache.org/log4j/2.x/download.html

    我还没有使用它,但看起来您可能需要在类路径上同时使用 log4j-api-2.0-beta2.jarlog4j-core-2.0-beta2.jar。我猜api jar是这样你可以编译的,核心包含实现。

    【讨论】:

      【解决方案2】:

      您是否在使用 IDE(例如 Eclipse)并且您是否通过运行代码(而不是在编译代码时)获得堆栈跟踪?

      这里只是一个疯狂的猜测,但您可能只是在设置构建路径(因此您的项目可以正常编译),但您在运行时的类路径没有 Log4J jar。

      在 Eclipse 中,您可以导出 JAR 文件,以便在运行时可用。

      【讨论】:

        【解决方案3】:

        VenkyMCA,

        您需要导入以下包才能使用 log4j 2.0

        import org.apache.logging.log4j.LogManager;
        import org.apache.logging.log4j.Logger;
        

        它们会正常工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多