【问题标题】:CXF Conflicts Xerces DependencyCXF 冲突 Xerces 依赖
【发布时间】:2015-04-12 08:33:45
【问题描述】:

我的 cxf 依赖项有问题。有一个非常庞大的项目正在运行,并且有很多依赖项。

我的问题是 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)

【问题讨论】:

    标签: java web-services maven jakarta-ee cxf


    【解决方案1】:

    此错误的原因是存在旧版本的 Xerces 依赖项。它可能是明确添加的,也可能来自另一个依赖项。第一种情况很容易解决,旧版本应该改成never版本。 (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文件,点击dependency hiearachy查看项目中的其他冲突。任何依赖都可能导致冲突。

    【讨论】:

      【解决方案2】:

      apache xerces 的多重依赖可能会导致此问题。转到 IDE 中的依赖层次树并简单地排除 xerces 依赖关系,这应该可以正常工作。

      您的代码中是否有 mockrunner-jms 依赖项?尝试从中排除 apache xerces 传递依赖。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-12
        • 2019-12-24
        • 2021-12-14
        相关资源
        最近更新 更多