一、问题描述
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/D:/apache-maven-3.6.3/repository/ch/qos/logback/logback-classic/1.2.11/logback-classic-1.2.11.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/D:/apache-maven-3.6.3/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.17.2/log4j-slf4j-impl-2.17.2.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 [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
二、原因分析
这个警告信息
SLF4J 是一个简单日志门面(Simple Logging Facade for Java),它提供了统一的日志接口,并允许开发人员在应用程序中使用不同的日志实现(如 Logback、Log4j 等)。然而,当类路径中存在多个 SLF4J 绑定时,就会发生冲突。
解决这个问题有以下几种方法:
1. 移除多余的 SLF4J 绑定:根据警告信息中提供的链接
2. 排除冲突的库:如果你使用的构建工具是 Maven 或 Gradle,可以在相关的依赖声明中排除冲突的库。例如,使用 Maven 的排除示例如下:
<dependency> <groupId>group-id</groupId> <artifactId>artifact-id</artifactId> <version>version</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
具体的排除操作根据你的项目和依赖配置而异,请根据实际情况进行调整。
3. 解决冲突的绑定:如果你确实需要同时使用两个绑定库,可以尝试解决冲突。根据警告信息显示的内容,实际的绑定类型是
例如,在 Logback 的配置文件(如
<configuration> <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> <resetJUL>true</resetJUL> </contextListener> <contextSelector class="ch.qos.logback.classic.selector.DefaultContextSelector"> <contextName>default</contextName> </contextSelector> <!-- 其他配置 --> </configuration>
三、错误原因
在terminal输入命令
mvn dependency:tree
查看造成冲突的jar包
四、解决方案
删除log4j的依赖即可,重新启动项目成功,无错误信息提示。
参考
Class path contains multiple SLF4J bindings.问题原因及解决方案-CSDN博客