4

私はすでに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
4

3 に答える 3

2

ここから log4j 2.0 をダウンロードしました: http://logging.apache.org/log4j/2.x/download.html

まだ使用していませんが、おそらくクラスパスlog4j-api-2.0-beta2.jarと同様に両方が必要なようです。log4j-core-2.0-beta2.jarAPI jar はコンパイルできるようにするためのものであり、コアには実装が含まれていると思います。

于 2012-11-09T13:29:28.153 に答える
0

IDE (Eclipse など) を使用していて、コードを実行して (コンパイル中ではなく) スタックトレースを取得しましたか?

ここでは大雑把な推測ですが、ビルド パスを設定しているだけかもしれませんが (そのため、プロジェクトは問題なくコンパイルされます)、実行時のクラスパスには Log4J jar がありません。

Eclipse では、実行時に使用できるように JAR ファイルをエクスポートできます。

于 2015-12-30T04:40:07.587 に答える
-5

ベンキーMCA、

log4j 2.0 を使用するには、以下のパッケージをインポートする必要があります。

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

そして、それらはうまく機能します。

于 2013-01-08T12:10:50.040 に答える