2014-01-13 11 views
10

私はgradleを使用してWebアプリケーションを作成しています。私はこのアプリでlog4jを使用しました。私はエラーを取得していますプロジェクトをビルドすると...log4j:エラー "org.apache.log4j.ConsoleAppender"オブジェクトが "org.apache.log4j.Appender"変数に割り当てられません

  • のlog4j:ERROR A "org.apache.log4j.ConsoleAppender" オブジェクト "org.apache.log4j.Appender" 変数に割り当て可能ではありません。
  • のlog4j:ERROR ":タイプ
  • のlog4jの目的に対しERROR [[email protected]]:ERRORクラス "org.apache.log4j.Appenderが"
  • のlog4jによってロードされましたorg.apache.log4j.ConsoleAppender "が[[email protected]]によって読み込まれました。
  • log4j:エラー "stdout"という名前のアペンダをインスタンス化できませんでした。

まだ良い答えが見つかりませんでした。そして、私のプロジェクトは正しくビルドされ、ログマッサージが正しく表示されます。テストクラスでのみ動作します。

+0

'ConsoleAppender'クラスはPowerMockのクラスローダーによって何とか読み込まれ、ベースの' Appender'型に正しくリンクされていません。 – chrylis

答えて

10

このアノテーションを追加すると、私の作品になります。

@PowerMockIgnore("org.apache.log4j.*") 
+0

しかし、あなたはこれらのエラーメッセージを修正しないようにしています。 –

3

クラスパスにはlog4jライブラリの2つのコピーが含まれています。 1つを除外してもう一度お試しください。

+0

私はslf4j-api-1.7.5でlog4j-1.2.17、slf4j-log4j12-1.7.5を使用しました。そしてslf4jはファサードです。 –

3

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

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

+0

OPはslf4jを使用しているとは言いません。 @ToYonosによって投稿された回答がより適切です。 –

関連する問題