2016-11-11 11 views
0

私はいくつかのレガシーコードを1.x => 2.xブリッジjar経由でlog4j 2.6に移行しようとしています。Log4j互換性/ブリッジAPIクラスキャスト例外

古いコードでは、org.apache.log4j.Loggerを拡張するクラスがあります。 2.6コア/ APIジャーならびに私のクラスパスにブリッジAPIジャーを追加する場合、I、クラスキャスト例外による失敗している単体テストを有する:

java.lang.ClassCastException: org.apache.log4j.Logger cannot be cast to com.example.MyLogger 

とMyLoggerのクラス署名は

あります
package com.example; 
import org.apache.log4j.Logger; 
public class MyLogger extends Logger { 
} 

これはlog4j 1.2だけで動作し、古いクラス(org.apache.log4j.Logger)はブリッジjarにあり、MyLoggerはLoggerなので、それは動作すると思います。

これはなぜ機能しないのですか?

答えて

0

これは、コードがMyLoggerのインスタンスではないLoggerオブジェクトを操作しているため、実行時に発生しています。まず、コード内にMyLoggerインスタンスのみを構築していたかどうかを確認します。 avoiding the use of printStackTraceのように、ここでデバッガが役に立ちます。

関連する問題