多个 SLF4J 绑定 activemq-all-5.6.0.jar 出错

问题描述 投票:0回答:3

当我升级到 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>

提前致谢。

maven activemq-classic slf4j
3个回答
46
投票

ActiveMQ 人员使用 Maven Shade Plugin 创建 activemq-all“ueber”jar。在版本 5.5.1 和 5.6.0 之间的某个地方,他们添加了 org.slf4j:slf4j-log4j12 依赖项 - 这就是你的问题。

不幸的是,因为他们使用了Shadow插件,所以你不能在POM中的activemq-all依赖定义中使用

exclusions

相反,您需要将 activemq-all 依赖项完全替换为所有必需的单独依赖项(当然 org.sl4j-log4j12 除外)。

以下页面详细介绍了所有必需的依赖项: http://activemq.apache.org/initial-configuration.html#InitialConfiguration-RequiredJARs

或者,以下是 activemq-all jar 中包含的所有依赖项(必需和可选)的列表(取自 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

希望有帮助。


16
投票

我在使用Spring时遇到了同样的问题。对我有帮助的是用以下内容替换 activemq-all 的依赖项:

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

希望这对任何人都有帮助...


0
投票
Try excluding the below slf4j/log4j dependencies    
 <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                        <exclusion>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-slf4j2-impl</artifactId>
                    </exclusion>
                        <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>jcl-over-slf4j</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>log4j</groupId>
                        <artifactId>log4j</artifactId>
                    </exclusion>
                </exclusions> 
© www.soinside.com 2019 - 2024. All rights reserved.