slf4j依赖包冲突

首先要明确slf4j是什么。他是将各个底层的日志框架抽象出来的一个接口层。底层的实现还是依赖于之前的各个框架。只是将各个框架经过改变,原理照搬。适配成可以统一抽象的slf4j文件。
那么这个包冲突就在于。一个接口由多个框架实现。slf4j不知道用哪个好了。冲突多发生在logback和log4j中。springboot默认用logback。这两个框架是一个人写的。因为觉得log4j不够好。才又写了logback。所以我们也用logback框架。接下来抛出问题和解决方案
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/SoftWareInstall/CodeTool/Maven/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:/D:/SoftWareInstall/CodeTool/Maven/Repository/org/apache/logging/log4j/log4j-slf4j-impl/2.12.1/log4j-slf4j-impl-2.12.1.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]
很明显。是由于第二个的log4j冲突了。我们定位到这个具体的log4j是有pom.xml中哪个dependency引入的,然后在dependency内部添加如下剔除


org.slf4j
slf4j-log4j12


log4j
log4j


log4j-slf4j-impl
org.apache.logging.log4j


不知道怎么找的。可以在idea的pom.xml中
光标放在依赖id处

image.png

然后进入依赖关系图找。光引入上面的剔除代码还不够。我的还是报错。于是找到关系图中的log4j。手动剔除一下
image.png

这下OK了。网上的都是只有第一步。我发现怎么也行不通,记个问题记录。如果帮到了你或者你有什么疑问。欢迎来找我一起讨论

你可能感兴趣的:(slf4j依赖包冲突)