I've been pulling my hair out for a week trying to figure out what I'm doing wrong here, including trying to find solutions on this site and through Google, but I think maybe I don't know what I'm searching for. Any help is greatly appreciated!
My goal is to use log4j 1.2.17 in a Maven 2 Java project which I created in Eclipse Kepler. I've recreated the problem from the Maven archetype: quickstart, then added the log4j dependency in pom.xml like so...
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
so that running 'maven package' builds happily...
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import org.apache.log4j.BasicConfigurator;
public class App
{
private static Logger logger =
LogManager.getLogger( App.class );
public static void main( String[] args )
{
BasicConfigurator.configure();
logger.debug( "Entering the main class" );
System.out.println( "Hello World!" );
}
}
But running 'java -cp target/dc-0.1.jar DC.dc.App' on the command line after a maven build results in this:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager
at DC.dc.App.<clinit>(App.java:14)
Caused by: java.lang.ClassNotFoundException: org.apache.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:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
I'm complying with the Maven directory structure and log4j.properties is stored in /src/main/resources. This is the log4j file.
log4j.appender.consoleAppender = org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout = org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.rootLogger = DEBUG, consoleAppender