Я создаю дополнительный модуль к уже проекту знатока мультимодуля. И для этого я хочу, чтобы все было похоже в других модулях (значение зависимостей) только для тестирования привет мира, затем я пойду, делают некоторый более сложный материал. И это действительно печатает привет мир, как это должно при развертывании на jboss сервер, но я получаю некоторую странную ошибку на консоли, у кого-либо был подобный опыт? и как я могу зафиксировать его? Здесь это:
15:48:35,789 ERROR [STDERR] log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
15:48:35,789 ERROR [STDERR] log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
15:48:35,790 ERROR [STDERR] log4j:ERROR [BaseClassLoader@9a8d9b{vfszip:/C:/jboss-5.1.0.GA/server/default/deploy/new-module-0.0.1-SNAPSHOT.war/}] whereas object of type
15:48:35,790 ERROR [STDERR] log4j:ERROR "org.jboss.logging.appender.FileAppender" was loaded by [org.jboss.bootstrap.NoAnnotationURLClassLoader@506411].
15:48:35,790 ERROR [STDERR] log4j:ERROR Could not instantiate appender named "FILE".
Вот часть Appender xml
Сначала проверьте свой
на предмет конфигурации приложения с именем FILE
(и разместите его здесь, если вы может - это может дать нам больше подсказок).
Дальнейшее расследование показывает, что org.jboss.logging.appender.FileAppender
фактически реализует интерфейс org.apache.log4j.Appender
. Так что это, по-видимому, конфликт загрузчика классов. Одно и то же определение класса (в данном случае org.apache.log4j.Appender
) при загрузке двумя разными загрузчиками классов считается для JVM двумя разными классами.
Включен ли log4j.jar в ваш war или в каталог server / lib? Если да, вы можете попробовать удалить его и посмотреть, решит ли он проблему.
Обновление: На самом деле самое простое решение - просто изменить тип приложения на org.apache.log4j.FileAppender
в jboss-log4j.xml.
Что касается log4j.jar, я имею в виду, что если он присутствует в вашей войне, то он (и копия org.apache.log4j.Appender
) загружается загрузчиком классов war ( BaseClassLoader @ 9a8d9b
в вашем сообщении об ошибке). И это вызывает конфликт загрузчика классов. Так что, если вы не развернете log4j.jar вместе с war, ошибка может исчезнуть. Это связано с Maven только тем, что зависимость настроена в вашем pom. Для этого небольшого эксперимента вы можете просто вручную удалить файл log4j.jar из war; если это решит проблему, настройте зависимость log4j в вашем pom как «предоставленную», например:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
<scope>provided</scope>
</dependency>
Если log4j.jar не находится в вашей войне, он может все еще находиться в каталоге server / default / lib - проверьте это и если он есть, попробуйте удалить его.