2015-02-11 94 views
1

我的cxf依賴關係有問題。有一個非常大的項目,工作和有很多的依賴關係。CXF衝突Xerces依賴關係

我的問題是與xerces依賴關係。在我的pom文件中沒有舊版本的xerces,但是我收到以下異常。你對這個問題有什麼想法嗎?

Caused by: java.lang.AbstractMethodError: org.apache.xerces.dom.ElementNSImpl.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object; 
    at org.apache.cxf.staxutils.StaxUtils.addLocation(StaxUtils.java:1083) 
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:971) 
    at org.apache.cxf.staxutils.StaxUtils.readDocElements(StaxUtils.java:947) 
    at org.apache.cxf.staxutils.StaxUtils.read(StaxUtils.java:874) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:226) 
    at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:186) 
    at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:92) 
    at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:203) 
    at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:147) 
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:90) 

回答

2

此錯誤的原因是存在舊版本的Xerces依賴關係。它可能會顯式添加,也可能來自其他依賴項。解決第一種情況很容易,舊版本應該改爲從不版本。 (在版本2.11.0中沒有錯誤)

依賴衝突可能來自另一個依賴關係,就像我的情況。一些依賴關係可能會引用Xerces依賴關係。項目中應該特別注意依賴性分級。在我的情況下,JTS依賴關係引用了舊版本的Xerces依賴項。

<dependency> 
<groupid>com.vividsolutions</groupid> 
<artifactid>jts</artifactid> 
<version>1.11</version> 
</dependency> 

JTS依賴關係在內部引用了Xerces 2.4.0。它可以在JTS pom中看到。

<dependency> 
     <groupId>xerces</groupId> 
     <artifactId>xercesImpl</artifactId> 
     <version>2.4.0</version> 
</dependency> 

可以有任何依賴,可以在內部使用Xerces依賴。應該跟蹤所有的依賴關係層次結構,舊版本的Xerces應該被排除在外,如下所示。

<dependency> 
<groupid>com.vividsolutions</groupid> 
<artifactid>jts</artifactid> 
<version>1.11</version> 
     <exclusions> 
      <exclusion> 
    <groupId>xerces</groupId> 
    <artifactId>xercesImpl</artifactId> 
    </exclusion> 
     </exclusions> 
</dependency> 

在eclipse中打開pom文件並單擊依賴項hiearachy查看項目中的其他衝突。任何依賴可能導致衝突。