2014-01-13 2 views
10

Я делаю веб-приложение с использованием градиента. Я использовал log4j в этом приложении. Когда я строй проекта я получаю сообщение об ошибке ...log4j: ОШИБКА Объект «org.apache.log4j.ConsoleAppender» не присваивается переменной «org.apache.log4j.Appender»

  • log4j: ОШИБКА «org.apache.log4j.ConsoleAppender» объект не может быть назначен на «org.apache.log4j.Appender» переменный.
  • log4j: ОШИБКА Класс "org.apache.log4j.Appender" был загружен
  • log4j: ОШИБКА [[email protected]], тогда как объект типа
  • log4j: ОШИБКА " org.apache.log4j.ConsoleAppender "был загружен [[email protected]].
  • log4j: ERROR Не удалось создать экземпляр с именем "stdout".

Я до сих пор не нашел хорошего ответа. И я забыл сказать, что мой проект правильно построен и правильно показывает журналы. Он работает не только на тестовых классах.

+0

Класс 'ConsoleAppender' каким-то образом загружается загрузчиком классов из PowerMock и неправильно связан с базовым типом' Appender'. – chrylis

ответ

10

Добавление этой аннотации работает для меня.

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

Но вы подавляете эти сообщения об ошибках, не исправляя их. –

3

Ваш путь к классу содержит 2 копии библиотеки log4j. Исключите один и повторите попытку.

+0

Я только что использовал log4j-1.2.17, slf4j-log4j12-1.7.5 с slf4j-api-1.7.5. И slf4j - это фасад. –

3

Есть ясный ответ here. : D

Когда у нас есть конечный метод и регистраторы slf4j в наших классах. Мы должны использовать powermock в нашем тестовом классе. Из-за этого мы должны использовать @MockPolicy (Slf4jMockPolicy.class) с импортом частиц в классе тестирования, который мы использовали Powermock.

+0

OP не говорит, что они используют slf4j. Ответ, отправленный @ToYonos, более уместен. –

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