java專案解決SLF4J: Class path contains multiple SLF4J bindings.問題

fusugongzi發表於2018-07-16

1.啟動專案的時候報warn,雖然不影響專案的正常使用,但是很煩人,所以決定排除。

問題是兩個不同的子包引用了同一個class,導致的問題。

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

2.將專案的依賴樹匯出,檢視引用目標包的pom配置,將這個包排除掉。

dependency:tree -Doutput=dep.txt

3.去dep.txt檔案搜尋引用目標包的pom配置,發現有兩個包所引用所在

+- com.****.openapi:openapi-sdk:jar:1.0.1-api1.2:compile
|  +- org.codehaus.jettison:jettison:jar:1.3.8:compile
|  |  \- stax:stax-api:jar:1.0.1:compile
|  +- commons-codec:commons-codec:jar:1.10:compile
|  +- com.google.code.gson:gson:jar:2.3.1:compile
|  +- org.slf4j:slf4j-api:jar:1.7.22:compile
|  +- org.slf4j:slf4j-log4j12:jar:1.7.22:compile
|  \- log4j:log4j:jar:1.2.17:compile

將其中一個包的slf4j-log4j12排除掉即可

4.沒有warnning,排除依賴的pom

<exclusion>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
</exclusion>


相關文章