Ошибка множественных привязок 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>
Надеюсь, это поможет кому-нибудь...