【问题标题】:multiple SLF4J bindings Error with activemq-all-5.6.0.jar多个 SLF4J 绑定 activemq-all-5.6.0.jar 出错
【发布时间】:2012-07-31 22:39:19
【问题描述】:

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


    【解决方案1】:

    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
    

    希望对您有所帮助。

    【讨论】:

    • 谢谢.. taht 对理解有很大帮助
    • 为什么 Apache 的家伙一直在制作这些“ueber”罐子?!?我刚刚被 ApacheDS-all 所吸引,包括一个与我路径上的另一个版本冲突的 slf4j 版本。我应该补充一点,spring-ldap-test 包含 ApacheDS-all 作为依赖项,这意味着当我将 spring-ldap-test 添加到我的 spring-boot 项目时,应用程序会崩溃。呃。
    【解决方案2】:

    我在使用 Spring 时遇到了同样的问题。帮助我的是将 activemq-all 的依赖替换为:

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

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

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 1970-01-01
      • 2012-09-28
      • 1970-01-01
      • 2016-01-09
      • 2015-04-24
      • 1970-01-01
      • 2023-03-28
      • 2014-09-05
      相关资源
      最近更新 更多