我收到以下错误:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Vash/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Vash/.m2/repository/org/slf4j/slf4j-jdk14/1.7.25/slf4j-jdk14-1.7.25.jar!/org/slf4j /impl/StaticLoggerBinder.class]
我已经检查了https://www.slf4j.org/codes.html#multiple_bindings 和类似的问题。我发现使用mvndependency:tree有4个依赖项使用SLF4J,因此我向它们添加了排除项,如下所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
这没有任何改变,但我仍然遇到相同的错误。我尝试删除警告中指定的.jar文件,但随后出现有关缺少类的错误。另外我正在使用IntelliJ,所以这里可能是通过某种方式重新加载pom.xml文件吗?
答案 0 :(得分:0)
我认为这是Maven中的错误/功能。假设您有以下依赖关系树:
A
+---B
+---C
| +---D
|
+---D
,并且您排除了D
上的B
,因为C
也将其插入。从Maven的角度来看,这很有意义,因为它没有试图理解B
和C
之间是否存在关系。我们知道它们全都来自Spring,但是Maven不确定。
解决方案:您需要在POM中的C
上复制排除项。
使用mvn dependency:tree
查找使用D
的所有地点,并分别添加一个排除项。
并确保您实际上排除了D
。在上面的示例中,您排除了org.slf4j:slf4j-log4j12
而不是org.slf4j:slf4j-jdk14