web-dev-qa-db-ja.com

log4j:ERROR「org.Apache.log4j.ConsoleAppender」オブジェクトを「org.Apache.log4j.Appender」変数に割り当てることができません

Gradleを使ってWebアプリを作っています。このアプリではlog4jを使用しました。プロジェクトをビルドするとエラーが発生します...

  • log4j:ERROR「org.Apache.log4j.ConsoleAppender」オブジェクトを「org.Apache.log4j.Appender」変数に割り当てることができません。
  • log4j:ERRORクラス「org.Apache.log4j.Appender」は、
  • log4j:ERROR [org.powermock.core.classloader.MockClassLoader@16a40b2]一方、タイプのオブジェクト
  • log4j:ERROR "org.Apache.log4j.ConsoleAppender"は[Sun.misc.Launcher$AppClassLoader@5e3a78ad]によってロードされました。
  • log4j:ERROR「stdout」という名前のアペンダーをインスタンス化できませんでした。

それでも良い答えは見つかりませんでした。そして、私は言うのを忘れました、私のプロジェクトは正しくビルドされ、ログメッセージを正しく表示します。テストクラスだけでは機能しません。

15

この注釈の追加は私にとってはうまくいきます。

@PowerMockIgnore("org.Apache.log4j.*") 
10
ToYonos

クラスパスにlog4jライブラリの2つのコピーが含まれています。 1つを除外して、再試行してください。

4
artplastika

明確な答えがあります ここ 。 :D

クラスにfinalメソッドとslf4jロガーがある場合。テストクラスではpowermockを使用する必要があります。このため、Powermockを使用したテストクラスで、特定のインポートで@MockPolicy(Slf4jMockPolicy.class)を使用する必要があります。

3