包沖突
1.使用maven管理項目時可能會遇到包沖突的情況比如:log4j-over-slf4j.jar 和 slf4j-log4j12.jar這兩個包同時一起運行時就會有問題。
2.這種沖突可能是顯式依賴導致,也可能是隱式依賴導致。
顯式依賴,直接可以從pom.xml文件的<dependency>中看到兩個沖突包的引用。
隱式依賴,在pom.xml的<dependency>無法看到沖突的包,而是由<dependency>引入的包間接引入的。
解決
先確認哪些依賴間接引入了包。使用mvn dependency:tree查看整個項目的依賴樹,這里能看到所有的依賴,包括間接依賴。
結果類似如下:
[INFO] +- junit:junit:jar:4.12:test[INFO] | /- org.hamcrest:hamcrest-core:jar:1.3:test[INFO] +- org.apache.storm:storm-core:jar:1.0.2:provided[INFO] | +- com.esotericsoftware:kryo:jar:3.0.3:compile[INFO] | | /- com.esotericsoftware:minlog:jar:1.3.0:compile[INFO] | +- org.clojure:clojure:jar:1.7.0:provided[INFO] | +- com.lmax:disruptor:jar:3.3.2:provided[INFO] | +- org.apache.logging.log4j:log4j-api:jar:2.1:provided[INFO] | +- org.apache.logging.log4j:log4j-core:jar:2.1:provided[INFO] | +- org.apache.logging.log4j:log4j-slf4j-impl:jar:2.1:provided[INFO] | +- org.slf4j:log4j-over-slf4j:jar:1.6.6:provided[INFO] | +- javax.servlet:servlet-api:jar:2.5:provided[INFO] | /- org.slf4j:slf4j-api:jar:1.7.7:compile[INFO] +- com.aaa.khala:aaa-khala-insight-sdk-transfer-api:jar:1.0.0-SNAPSHOT:compile[INFO] | /- com.aaa.khala:aaa-khala-common:jar:1.0.0-SNAPSHOT:compile[INFO] | +- javax.mail:javax.mail-api:jar:1.5.5:compile[INFO] | +- cglib:cglib:jar:2.2.2:compile[INFO] | +- org.aspectj:aspectjrt:jar:1.7.4:compile[INFO] | +- org.aspectj:aspectjweaver:jar:1.7.4:runtime[INFO] | +- org.javassist:javassist:jar:3.20.0-GA:compile[INFO] | +- log4j:log4j:jar:1.2.17:compile[INFO] | +- org.slf4j:slf4j-log4j12:jar:1.7.7:compile[INFO] | +- dom4j:dom4j:jar:1.6.1:compile[INFO] | +- jaxen:jaxen:jar:1.1.6:compile[INFO] | +- commons-collections:commons-collections:jar:3.2.1:compile[INFO] | +- commons-codec:commons-codec:jar:1.9:compile[INFO] | +- commons-beanutils:commons-beanutils:jar:1.9.2:compile[INFO] | +- org.apache.commons:commons-compress:jar:1.6:compile[INFO] | | /- org.tukaani:xz:jar:1.4:compile
查到沖突包對應的依賴,在pom.xml的<dependency>中配置排除,就不會引入該包了,例如:
<dependency> <groupId>com.aaa.khala</groupId> <artifactId>aaa-khala-insight-sdk-transfer-api</artifactId> <version>1.0.0-SNAPSHOT</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions></dependency>
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答