Ошибка множественных привязок SLF4J с activemq-all-5.6.0.jar

Когда я обновляюсь до activemq-all-5.6.0

Я получаю эту ошибку при запуске сервера

SLF4J: путь к классу содержит несколько привязок SLF4J

У меня нет этой проблемы при использовании activemq-all-5.5.1

При проверке я обнаружил, что есть StaticLoggerBinder.class в обоих activemq-all-5.6.0.jar и slf4j-log4j12-1.5.10.jar, который вызывает проблему

Пожалуйста, помогите в отладке этой проблемы

Мой pom.xml выглядит следующим образом

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.5.10</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.5.10</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.10</version>
    <scope>runtime</scope>
</dependency>

Активная зависимость mq выглядит так

Старая версия 5.5.1 (это работает)

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.5.1</version>
</dependency>

Новая версия 5.6.0 (это дает ошибку)

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-all</artifactId>
    <version>5.6.0</version>
</dependency>

Заранее спасибо.

2 ответа

Решение

Ребята из ActiveMQ используют плагин Maven Shade для создания jar-файла activemq-all. Где-то между версиями 5.5.1 и 5.6.0 они добавили зависимость org.slf4j:slf4j-log4j12 - отсюда ваша проблема.

К сожалению, потому что они использовали плагин тени, вы не можете использовать exclusions в вашем определении зависимости activemq-all в вашем POM.

Вместо этого вам нужно будет полностью заменить зависимость activemq-all всеми необходимыми индивидуальными зависимостями (кроме, конечно, org.sl4j-log4j12).

На следующей странице подробно описаны все необходимые зависимости: http://activemq.apache.org/initial-configuration.html

В качестве альтернативы ниже приведен список всех зависимостей (обязательных и необязательных), включенных в jar activemq-all (взятых из конфигурации плагина shade в pom activemq-all):

org.apache.activemq:activemq-camel
org.apache.activemq:activemq-core
org.apache.activemq:activemq-console
org.apache.activemq:activemq-jaas
org.apache.activemq:activemq-optional
org.apache.activemq:kahadb
org.apache.geronimo.specs:geronimo-jms_1.1_spec
org.apache.geronimo.specs:geronimo-jta_1.0.1B_spec
org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec
org.apache.geronimo.specs:geronimo-annotation_1.0_spec
org.slf4j:slf4j-api
org.slf4j:slf4j-log4j12
log4j:log4j

Надеюсь, это поможет.

У меня была такая же проблема при использовании Spring. Что помогло мне, так это заменить зависимость activemq-all на:

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-spring</artifactId>
    <version>5.14.3</version>
</dependency>

Надеюсь, это поможет кому-нибудь...

Другие вопросы по тегам