2017-12-21 4 views
0

Was ich implementieren log Rahmen logback auf slf4j basiert, habe ich logback.xml und verwenden Sie einen slf4j LoggerFactory im Code, aber wenn ich „mvn ausführen sauber verify "Ich habe eine log4j Klasse nicht gefunden Exception von Unit Tests geworfen, aber ich verwende log4j sowieso nicht. Muss ich die log4j Bibliothek in meine Pom-Datei importieren?wie java.lang.ClassNotFoundException zu beheben: org.apache.log4j.Level

die Spur:

java.lang.NoClassDefFoundError: org/apache/log4j/Level 
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150) 
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124) 
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412) 
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) 
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:132) 
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:273) 
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.<clinit>(SpringJUnit4ClassRunner.java:96) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) 
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70) 
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 25 more 

ich aber nur Import 'org.slf4j.LoggerFactory' in einem anderen Paket.

+0

Sie die richtige Abhängigkeit für slf4 zu Ihrem pom hinzufügen müssen .xml und bauen Sie das Projekt neu auf. – Stultuske

+0

@Stultuske Dosis slf4j hängt von log4j ab? Logback-classic-1.0.13.jar – ReturnHttp402

+0

Ich denke schon, du bist ein paar Dinge auf. Sie benötigen zum Beispiel keine logback.xml. Ein einfaches: log4j.properties reicht. gehen Sie einfach über das: https://www.slf4j.org/docs.html es könnte Ihnen helfen – Stultuske

Antwort

0

fand ich die Ursache, gibt es ein Paket slf4j-log4j containg, die das Paket Konflikt einführen, ausschließen nur log4j aus diesem Paket mithilfe:

 <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
      </exclusion> 
     </exclusions> 
Verwandte Themen