2016-11-11 3 views
0

Я пытаюсь перенести некоторый унаследованный код в log4j 2.6 через банку моста 1.x => 2.x.Log4j совместимость/мост API класс исключение литья

В старом коде у меня есть класс, который расширяет org.apache.log4j.Logger. При добавлении банки 2,6 ядра/API, а также мост апите банку с моими классами, у меня есть модульный тест, который неисправный за счетом исключения в классе литого:

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) находится в банке моста, и поскольку MyLogger isa Logger, вы ожидаете, что он все равно будет работать.

Любые идеи о том, почему это не работает?

ответ

0

Это происходит во время выполнения, потому что код управляет объектом Logger, который не является экземпляром MyLogger. Сначала я должен проверить, строю ли в коде только экземпляры MyLogger. Здесь используется отладчик, а также avoiding the use of printStackTrace.

Смежные вопросы