4

im already set the build path for log4j12-api-beta2.jar but it gives the following error please help me to solve this problem
my code is follows java file:

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



 }

and my Main() file is:

 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());

}

}

it gives the following Exception:

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
Craig Swing
  • 8,152
  • 2
  • 30
  • 43
venkyMCA
  • 57
  • 1
  • 2
  • 13

3 Answers3

2

I just downloaded log4j 2.0 from here: http://logging.apache.org/log4j/2.x/download.html

I haven't used it yet, but looks like you probably need both log4j-api-2.0-beta2.jar as well as log4j-core-2.0-beta2.jar on the classpath. I'm guessing the api jar is so you can compile and the core contains the implementation.

Upgradingdave
  • 12,916
  • 10
  • 62
  • 72
0

Are you using an IDE (e.g. Eclipse) and did you get the stacktrace from running your code (instead of while compiling it)?

Just a wild guess here, but you might just be setting build path (so your project will compile okay), but your classpath during runtime doesn't have the Log4J jars.

In Eclipse you can export a JAR file so that it would be available during runtime.

KC Wong
  • 2,410
  • 1
  • 18
  • 26
-5

VenkyMCA,

You need to import the below packages to work with log4j 2.0

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

And they will work fine.