多个SLF4J绑定,如何查找有问题的依赖关系

时间:2019-03-08 21:14:36

标签: slf4j

我遇到以下错误:

SLF4J: Found binding in [jar:file:/home/mmucha/.m2/repository/org/apache/activemq/activemq-all/5.15.8/activemq-all-5.15.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/mmucha/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

据此,我知道log4jLoggerFactory是由activemq慷慨提供的。 mvn dependency:tree什么都没给我显示,检查activemq jar文件中的pom.xml文件显示出一些依赖关系,但是到目前为止,我按照排除条件进行了设置,但仍然无法将其杀死。

问题:发现冲突的正确方法是什么?我缺少哪个排除项?

<dependency>
      <groupId>org.apache.activemq</groupId>
      <artifactId>activemq-all</artifactId>
      <version>5.15.8</version>
      <exclusions>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.slf4j</groupId>
          <artifactId>jcl-over-slf4j</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

更新/奖金问题:

我什么都不做,但是运行了几次神秘且不推荐使用的命令: mvn -U idea:idea

我不知道该怎么做,但是每次创意都有些疯狂时,它会有所帮助。因此,在此治愈之后,实际绑定更改为:

Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

表示我终于得到了可读的日志,但是,烦人的警告仍然存在,因此原始问题也是如此。并且对目标理念的任何解释:理想的解决原本无法解决的理念。有想法吗?

2 个答案:

答案 0 :(得分:0)

您正在使用哪个IDE?

IntelliJ:-打开pom.xml

按 ALT + CNTRL + SHIFT + U或右键单击图->显示依赖项

现在它将弹出一个图表窗口,您可以在其中搜索依赖项

activemq-all-5.15.8.jar和logback-classic-1.2.3.jar

它将为您显示所有依赖项的图形视图。您可以看到包含这些JAR的父JAR,并且可以排除您真正不想使用的JAR。

答案 1 :(得分:0)

以下是经过测试的有效示例,可以解决该问题:

<dependencies>
<!-- Spring JMS -->
<dependency>
   <groupId>org.springframework</groupId>
    <artifactId>spring-jms</artifactId>
        <version>${springframework.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>commons-logging</artifactId>
                <groupId>commons-logging</groupId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- ActiveMQ -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-all</artifactId>
        <version>${activemq.version}</version>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${spring-boot-test.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>