2012-11-09 75 views
4

IM已经设置log4j12-API beta2.jar构建路径,但它给人的 以下错误,请帮我解决这个问题
我的代码如下 的java文件:ClassNotFoundException的2.0

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; 
} 



} 

和我的主要()文件:

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 

回答

1

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

我还没有使用过,但看起来你可能需要在classpath都log4j-api-2.0-beta2.jar以及log4j-core-2.0-beta2.jar。我猜api jar是可以编译的,核心包含了实现。

+1

我安装了这两个罐仍然显示相同的例外 – venkyMCA

-5

VenkyMCA,

需要导入下面的封装,log4j的2.0

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

工作,他们将正常工作。

0

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

这里只是一个疯狂的猜测,但你可能只是设置构建路径(所以你的项目将编译好),但是你的类路径在运行时没有Log4J罐。

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

相关问题