SpringBoot 之关于Class path contains multiple SLF4J bindings.警告解决

问题:

部署SringBoot项目到tomcat出现下面的警告。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/yangqian/workspace/idea/ule-ai/target/ule-ai-beta-0.0.1-SNAPSHOT/WEB-INF/lib/slf4j-log4j12-1.7.26.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/yangqian/workspace/idea/ule-ai/target/ule-ai-beta-0.0.1-SNAPSHOT/WEB-INF/lib/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]
02-Aug-2019 11:21:08.121 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ai]]

原因分析:

大概意思是说logback-classic包和slf4j-log4j12包,关于org/slf4j/impl/StaticLoggerBinder.class 这个类发生了冲突。
发生这个错误的原因,首先logback 日志的开发者和log4j 的开发者是一波人,而springboot 默认日志是较新的logback 日志。但是以前流行的日志却是log4j ,而且很多的第三方工具都含有log4j 得引入。
而我们在项目开发中,难免会引入各种各样的工具包,所以,基本上springboot 项目,如果不注意,肯定会出现这种冲突的。

问题隐患:

在开发工具中运行,对,没毛病,一般会正常启动。
发现将springboot 配置成tomcat运行 ,即修改成war 包之后,就会出现这个警告,一般这个警告没有什么影响;尽管你在开发工具中能正常运行,也可能在打完包之后不能运行。

解决方案:

既然抛了jar包冲突 ,那我们就排除一个jar 包即可。关键是排除哪一个jar包 ,这里注意下了,如果你用的是logback 日志,一定要排除slf4j-log4j12 包,不要排除logback-classic 包。
找到pom.xml 文件,idea 可以看引入jar 包的联系,可以这样看到你的依赖结构:
在这里插入图片描述
在这里插入图片描述
可以看到dfs-uploadclient 包中默认引入了slf4j-log4j12包,并且提示这里的log4j jar有冲突,除此之外,springboot 一定引入的spring-boot-starter-web 包,它里边也有这个slf4j-log4j12 引入。
只要排除dfs-uploadclient包中的 slf4j-log4j12 即可。
如下:

<dependency>
    <groupId>com.ule.dfs</groupId>
    <artifactId>dfs-uploadclient</artifactId>
    <version>${env}-1.1.5.7</version>
    <exclusions>
    	<!--排除这个slf4j-log4j12-->
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值