Ответ 1
Сначала проверьте <server>/conf/jboss-log4j.xml
конфигурацию appender с именем FILE
(и опубликуйте здесь, если можете, - это может дать нам больше подсказок).
Дальнейшее исследование показывает, что org.jboss.logging.appender.FileAppender
фактически реализует интерфейс org.apache.log4j.Appender
. Таким образом, это, по-видимому, конфликт классов. Такое же определение класса (в данном случае org.apache.log4j.Appender
) при загрузке двумя разными загрузчиками классов считается как два разных класса для JVM.
Включен ли log4j.jar в вашу войну или в ваш каталог server/lib? Если это так, вы можете попробовать удалить его и посмотреть, разрешает ли он проблему.
Обновление: На самом деле самым простым решением является простое изменение типа appender на org.apache.log4j.FileAppender
в jboss-log4j.xml.
Что касается log4j.jar, я имею в виду, что если он присутствует в вашей войне, он (и копия org.apache.log4j.Appender
) загружается загрузчиком классов war ([email protected]
в сообщении об ошибке). И это вызывает конфликт классов. Поэтому, если вы не развертываете log4j.jar с вашей войной, ошибка может исчезнуть. Это связано с Maven только тем, что зависимость настроена в вашем pom. Для этого небольшого эксперимента вы можете просто удалить log4j.jar из своей войны вручную; если это решает проблему, настройте зависимость log4j в своей папке как "предоставленную", например:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
<scope>provided</scope>
</dependency>
Если log4j.jar не находится в вашей войне, он все равно может находиться в каталоге server/default/lib - пожалуйста, проверьте это, и если он есть, попробуйте удалить его.