slf4j的jar包冲突:Class path contains multiple SLF4J bindings

本文介绍了在运行Spring Boot应用时遇到SLF4J绑定冲突的问题,虽然项目能正常启动,但存在警告。解决方法是通过查看IDE的依赖结构,找出包含多个SLF4J实现的jar包,然后排除其中一个,以消除警告。

运行spring boot时出现的问题:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/myworkspace/mvnworkspace/repository/ch/qos/logback/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/myworkspace/mvnworkspace/repository/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.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]

但项目可以正常启动在这里插入图片描述
解决方法:
首先点击右侧图中的图标
在这里插入图片描述

在这里插入图片描述

可以看到同时存在这两个包,可以顺路径找到其在哪个jar下面
在相应的jar下面加入下面语句即可,删除其中一个即可。

<exclusions>
    <exclusion>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
</exclusions>
### 解决SLF4J日志绑定冲突问题 当遇到“SLF4J: Class path contains multiple SLF4J bindings”的警告时,表明项目中的类路径下存在多个不同版本或类型的SLF4J绑定。这会使得SLF4J无法确定具体使用哪一个日志实现框架来记录日志消息。 #### 方法一:手动删除多余的绑定文件 对于某些环境配置,可以直接通过命令行工具移除不必要的日志库依赖项。例如,在HBase环境中可以执行以下操作: ```bash rm -f /usr/local/hadoop/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar ``` 这种方法适用于那些不需要特定日志实现的情况,并且能够快速解决问题[^3]。 #### 方法二:调整Maven/Gradle构建配置 如果是在基于Maven或Gradle管理依赖关系的应用程序中,则可以通过修改`pom.xml`或者`build.gradle`文件的方式排除掉不希望引入的日志实现模块。比如在Spring Boot应用里,可以在POM文件中加入如下片段以防止加载默认自带的logback之外其他形式的日志组件: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除此处指定的slf4j-log4j12 --> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> ``` 这样做不仅解决了当前的问题,还提高了项目的可维护性和清晰度[^4]。 #### 方法三:检查并清理Classpath上的重复条目 有时可能是由于不小心将相同的库多次添加到了classpath上所造成的。此时应该仔细审查整个工程结构以及第三方插件设置,确保每个必要的日志接口只被引用一次。同时也可以借助IDE内置的功能来进行辅助排查工作。 总之,处理此类问题的关键在于理解自己的应用程序究竟需要什么样的日志解决方案,从而有针对性地采取措施去除冗余部分。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值