Странная jboss консольная ошибка

Я создаю дополнительный модуль к уже проекту знатока мультимодуля. И для этого я хочу, чтобы все было похоже в других модулях (значение зависимостей) только для тестирования привет мира, затем я пойду, делают некоторый более сложный материал. И это действительно печатает привет мир, как это должно при развертывании на 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

http://pastebin.com/X7Dgdrki

13
задан skaffman 10 November 2011 в 19:42
поделиться

1 ответ

Сначала проверьте свой /conf/jboss-log4j.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 - проверьте это и если он есть, попробуйте удалить его.

18
ответ дан 1 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: