Множественные привязки SLF4J Ошибка с activemq-all-5.6.0.jar
Когда я обновляюсь до activemq-all-5.6.0
Я получаю эту ошибку во время запуска сервера
SLF4J: путь класса содержит несколько привязок SLF4J
У меня нет этой проблемы при использовании activeemq-all-5.5.1
При проверке я обнаруживаю, что StaticLoggerBinder.class как в activeemq-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>
Спасибо заранее.
Ответы
Ответ 1
Ребята из ActiveMQ используют Maven Shade Plugin, чтобы создать банку activemq-all "ueber". Где-то между версиями 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#InitialConfiguration-RequiredJARs
В качестве альтернативы, список всех зависимостей (обязательный и необязательный), включенных в банку activemq-all (взятый из конфигурации плагина тени в activemq-all pom):
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
Надеюсь, что это поможет.
Ответ 2
У меня была такая же проблема при использовании Spring. Что помогло мне заменить зависимость activemq-all:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.14.3</version>
</dependency>
Надеюсь, это поможет любому...