【问题标题】:SLF4J: Class path contains multiple SLF4J bindings. Cant get rid of bindingSLF4J:类路径包含多个 SLF4J 绑定。无法摆脱束缚
【发布时间】:2019-04-30 09:55:32
【问题描述】:

所以,

我又一次完全被这个错误困住了.. 我已经阅读了一些关于这个问题的帖子,但无法解决它..

SLF4J: Found binding in [jar:file:/home/me/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.10.0/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/me/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

mvn 依赖:树给出以下内容:

[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:2.0.3.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter:jar:2.0.3.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot:jar:2.0.3.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-autoconfigure:jar:2.0.3.RELEASE:compile
[INFO] |  |  +- org.springframework.boot:spring-boot-starter-logging:jar:2.0.3.RELEASE:compile
[INFO] |  |  |  +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] |  |  |  |  \- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] |  |  |  \- org.apache.logging.log4j:log4j-to-slf4j:jar:2.10.0:compile

据我所知,一个实例在 starter-data-jpa 下 在文件夹 .m2/ch/qos

但我无法删除该文件夹,否则应用程序将无法启动。

我似乎也无法排除它。

       <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>

排除后我运行mvn clean 并重新导入所有依赖项,但它仍然无法启动。

当我删除整个

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

部分,它现在位于[INFO] +- org.springframework.boot:spring-boot-starter-jdbc:jar:2.0.3.RELEASE:compile

根据mvn dependency:tree,应用仍然无法启动,同样的错误。

那么我该如何摆脱这个东西呢?

我不知道这是怎么发生的。我已经好几个星期没有在 pom 中添加或删除任何东西了。

【问题讨论】:

    标签: java maven spring-boot pom.xml


    【解决方案1】:

    这个问题由来已久。处理此问题的最佳方法是按照以下步骤操作:

    1. 寻找 Maven 依赖项。搜索 log4j-slf4j。该库可以来自多个依赖项。我不想删除 spring-boot-starter-logging,因为它会影响常规漂亮的 spring 日志。 How to get a dependency tree for an artifact?.

      mvn 依赖:树

    2. 排除依赖。您必须能够找到具有相同库的一个或多个依赖项。我只在 kafka-avro-serializer 中有 slf4j-log4j12,所以我将其排除在外。如果您的 mvn 依赖树显示不止一个,请确保您排除所有。

         <dependency>
              <groupId>io.confluent</groupId>
              <artifactId>kafka-avro-serializer</artifactId>
              <version>4.0.0</version>
              <exclusions>
                  <exclusion>
                      <groupId>org.slf4j</groupId>
                      <artifactId>slf4j-log4j12</artifactId>
                  </exclusion>
              </exclusions>
          </dependency>
      

    【讨论】:

      【解决方案2】:

      决定排除所有的日志记录框架,这样任何地方都不会再有不需要的记录器......它可以工作

              <exclusions>
                  <exclusion>
                      <groupId>org.springframework.boot</groupId>
                      <artifactId>spring-boot-starter-logging</artifactId>
                  </exclusion>
              </exclusions>
      

      【讨论】:

        猜你喜欢
        • 2012-12-11
        • 2013-01-28
        • 2016-03-12
        • 2014-05-18
        • 2021-05-19
        • 2020-07-07
        • 2018-12-12
        • 2012-09-11
        相关资源
        最近更新 更多