当我升级到activemq-all-5.6.0
时我在服务器启动期间收到此错误
SLF4J:类路径包含多个SLF4J绑定
使用activemq-all-5.5.1
时,我没有这个问题在检查时,我确实发现activemq-all-5.6.0.jar和slf4j-log4j12-1.5.10.jar中的StaticLoggerBinder.class导致了问题
请在调试此问题时提供帮助
我的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>
提前致谢。
答案 0 :(得分:40)
ActiveMQ人员使用Maven Shade Plugin创建activemq-all“ueber”jar。在版本5.5.1和5.6.0之间,他们添加了org.slf4j:slf4j-log4j12依赖 - 因此你的问题。
不幸的是,因为他们使用了shade插件,所以不能在POM中的activemq-all依赖关系定义中使用exclusions
。
相反,您需要将activemq-all依赖项完全替换为所有必需的依赖项(当然除了org.sl4j-log4j12之外)。
以下页面详细介绍了所有必需的依赖项: http://activemq.apache.org/initial-configuration.html#InitialConfiguration-RequiredJARs
或者以下是activemq-all jar中包含的所有依赖项(必需和可选)的列表(取自activemq-all pom中的shade插件的配置):
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
希望有所帮助。
答案 1 :(得分:10)
使用Spring时遇到了同样的问题。帮助我的是将activemq-all的依赖替换为:
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-spring</artifactId>
<version>5.14.3</version>
</dependency>
希望这会对任何人有所帮助......