首页 > 解决方案 > java.lang.LinkageError:覆盖方法“org/w3c/dom/Node.setUserData”时加载约束冲突

问题描述

我正在尝试调用 webservice,但收到以下响应:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>java.lang.LinkageError: loading constraint violation when overriding method "org/w3c/dom/Node.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object;" during creation of class "com/ibm/ws/webservices/engine/xmlsoap/SOAPPart": loader "org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader@6d776858" of class "com/ibm/ws/webservices/engine/xmlsoap/SOAPPart" and loader "com/ibm/oti/vm/BootstrapClassLoader@7d4883b2" of class "org/w3c/dom/Node" have different types for the method signature</faultstring>
         <detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

我正在将应用程序从 java 6 更新到 java 8,websphere 8.0 到 9.0.3,在较低版本上一切正常,但更新后这部分不想工作。

上面的错误我只在应用程序启动后第一次调用端点时得到它,其余时间我得到:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server</faultcode>
         <faultstring>java.lang.NoClassDefFoundError: com/ibm/ws/webservices/engine/SOAPPart</faultstring>
         <detail/>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

类加载策略是首先使用本地类加载器加载的类(最后是父类)

我不知道还能尝试什么,在主 pom 中声明了依赖关系,如下所示:

 <dependency>
     <groupId>com.ibm.websphere.ws</groupId>
     <artifactId>runtime</artifactId>
     <version>9.0.0</version>
     <scope>provided</scope>
</dependency>

并在我需要的模块中使用它,如下所示:

<dependency>
    <groupId>com.ibm.websphere.ws</groupId>
    <artifactId>runtime</artifactId>
</dependency>

我不知道还能做什么......

标签: javasoap

解决方案


推荐阅读