最近在工做中用CXF遇到Jar包衝突的問題,在此作一個記錄。
在使用CXF調用WebService服務時,遇到一個異常:java.lang.NoSuchMechodError:org.apache.ws.commons.schema.XmlSchemaCollection.getExtGet().然而Jar包已經在Maven的pom.xml中引入進來了,jar包是xmlschema-core-2.0.3.jar,但是點擊類XmlSchemaCollection卻連接到了XmlSchema-1.1.jar原來這個包裏的類版本比較低。仔細一查看這個Jar是被xfire-all-1.2.6.jar依賴而引入進來的,因而兩個Jar中的class就相互衝突了。
因而得想辦法把XmlSchema-1.1.jar不引入,通過請教同事和網上找資料,Maven能夠在pom.xml經過配置<exclusions>解除對於其餘jar的引用。配置以下:java
<dependency> <goupId>org.codehaus.xfire</goupId> <artifactId>xfire-all<artifactId> <version>1.2.6</version> <exclusions> <exclusion> <groupId>org.codehaus.xfire</goupId> <artifactId>xfire-spring</artifactId> </exclusion> <--! 解除jar依賴 --> <exclusion> <groupId>org.apache.ws.commons</goupId> <artifactId>XmlSchema</artifactId> </exclusion> </exclusions> <dependency>
附錄:問題處理和截圖spring
異常信息:apache
查看class所在jar
spa
兩個jar都有該class
code
查看jar依賴關係
xml
解除jar依賴關係
get