2017-12-21 8 views
0

ログフレームワークはlogback slf4jに基づいているように私が実装何を、私はきれいな「MVNを実行しかしとき、logback.xmlを追加し、コード内でslf4j LoggerFactoryを使用します「log4jクラスに出会ってユニットテストでスローされた例外が見つかりませんでしたが、とにかくlog4jは使用しません。私はpomファイルにlog4jライブラリをインポートする必要がありますか?はjava.lang.ClassNotFoundExceptionが修正方法:org.apache.log4j.Level

トレースは次のとおりです。

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 

別のパッケージではしかし、私だけのインポート 'org.slf4j.LoggerFactory'。

+0

を.xmlを開き、プロジェクトを再ビルドします。 – Stultuske

+0

@Stultuske用量slf4jはlog4jに依存しますか?私はすでにlogback-classic-1.0.13.jarを使用してslf4jでログバックをバインドしています – ReturnHttp402

+0

あなたはいくつかのことを考えています。たとえば、logback.xmlは必要ありません。単純です:log4j.propertiesが行います。ちょうどこれを見てください:https://www.slf4j.org/docs.htmlそれはあなたを助けるかもしれません – Stultuske

答えて

0

私はちょうど使用することで、このパッケージの外にlog4jを除外し、パッケージの競合を導入SLF4J-のlog4jをcontaingパッケージがあります、原因を見つけました:あなたはあなたのポンポンにslf4の正しい依存関係を追加する必要があります

 <exclusions> 
      <exclusion> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-log4j12</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>log4j</groupId> 
       <artifactId>log4j</artifactId> 
      </exclusion> 
     </exclusions> 
関連する問題