現象
今天啟動項目時,總是以下報錯,并退出SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/F:/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.13.3/log4j-slf4j-impl-2.13.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/F:/.m2/repository/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
原因
日志組件嘛,都是引入的,所以應該是組件沖突了。cursor很快給我指出了問題,是
log4j-slf4j-impl-2.13.3.jar
log4j-to-slf4j.2.14.1
這2個包沖突了,
但cursor解決起來很慢,只好自己解決。
解決
首先,我到文件夾下發現log4j-slf4j-impl-2.13.3.jar這個包是新引入的,那我想把它干掉,那就需要知道這個包都是誰引入的。
又搜了一圈,發現idea一個很好用的功能。
- idea右邊欄中,點maven,找到對應的模塊
- 右鍵,然后 Show Dependencies…
- 就有出現復雜的依賴關系圖(點擊 下圖中的3個小紅色箭頭,依賴關系可以看的更清楚)
- 在這個頁面上,Ctrl+F查找你想要的jar包。
- 點擊以上你找到的jar包,idea就會只顯示這個jar的依賴關系圖。
還是很方便的,之前都沒發現這個功能,對于排查依賴沖突,還是很快的。