Проблема с загрузкой классов
От: m.victor  
Дата: 05.11.11 09:21
Оценка:
Привет!
В томкате в lib есть библиотека commons-logging.jar
В проекте который деплоится в этом томкате и который собирается мавеном, тоже есть библиотека commons-logging.jar.

Соотвественно при деплое появляется ошибка связанная с тем что сщействует два одинаковых класса:

LogConfigurationException: org.apache.commons.logging.LogConfigurationException: org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed. (Caused by org.apache.commons.logging.LogConfigurationException: Invalid class loader hierarchy. You have more than one version of 'org.apache.commons.logging.Log' visible


Если из папки tomcat/lib убрать эту библиотеку (а в самом приложении в lib всё еще есть эта библиотека), пишет ошибку
failed to initialize due to runtime exception: Error: java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory


Как исправить это всё?
Re: Проблема с загрузкой классов
От: Jakop Россия https://wmspanel.com
Дата: 05.11.11 10:29
Оценка:
Здравствуйте, m.victor, Вы писали:

MV>Как исправить это всё?

верни томкату его библиотеку и напиши в поме

<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
Re[2]: Проблема с загрузкой классов
От: m.victor  
Дата: 05.11.11 10:43
Оценка:
Здравствуйте, Jakop, Вы писали:

J>Здравствуйте, m.victor, Вы писали:


MV>>Как исправить это всё?

J>верни томкату его библиотеку и напиши в поме

J> <dependency>

J> <groupId>commons-logging</groupId>
J> <artifactId>commons-logging</artifactId>
J> <version>1.1.1</version>
J> <scope>provided</scope>
J> </dependency>


в поме нет зависимости на commons-logging

есть такие зависимости
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>

</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>

</dependency>


но в итоговом war создается commons-loggin.jar.




попробовал в них указать provided но Всё равно получаю ошибку

onstructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/log4j/Logger
Re[3]: Проблема с загрузкой классов
От: m.victor  
Дата: 05.11.11 10:45
Оценка:
Здравствуйте, m.victor, Вы писали:


MV>попробовал в них указать provided но Всё равно получаю ошибку


MV>onstructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/log4j/Logger



Если provided в них не указывать то будет

You have more than one version of 'org.apache.commons.logging.Log' visible, which is not allowed.
Re[3]: Проблема с загрузкой классов
От: UDI Россия  
Дата: 05.11.11 11:52
Оценка:
У вас slf4j-log4j12 ссылается по своим зависимостям на log4j. Не знаю как переопределить зависимость в maven, в ivy это <override>, может в maven что-то подобное. Переопределите так чтобы ее не тащить вместе с slf4j-log4j12, это если вы точно уверены, что библиотека log4j будет в libах томкета.
"Не волнуйся, голова! Теперь будет думать компьютер"
Гомер Джей Симпсон
Re[4]: Проблема с загрузкой классов
От: Jakop Россия https://wmspanel.com
Дата: 05.11.11 11:59
Оценка:
Здравствуйте, UDI, Вы писали:

UDI>У вас slf4j-log4j12 ссылается по своим зависимостям на log4j. Не знаю как переопределить зависимость в maven, в ivy это <override>, может в maven что-то подобное. Переопределите так чтобы ее не тащить вместе с slf4j-log4j12, это если вы точно уверены, что библиотека log4j будет в libах томкета.

мысль верная. Автор, посмотри на

<dependency>
<exclusions>
<exclusion>
https://wmspanel.com/nimble — Nimble Streamer media server for live and VOD HLS, RTMP, HTTP streaming

https://wmspanel.com/ — Control and reporting panel for Wowza and Nimble Streamer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.