2012-11-09 77 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文件,以便它在運行時可用。

相關問題