java - 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>
我不知道还能做什么......
解决方案
推荐阅读
- javascript - Postgresql 在 node.js 中不起作用。“要求('pg')”返回错误
- r - 是否有任何选项可以进行列拆分?
- java - 在 java 11 上的 SSL 通信期间发生 SocketException 时,如何使用 DefaultHttpRequestRetryHandler(HTTPClient) 重试?
- regex - 用于提取 YouTube ID 和时间序列的正则表达式
- r - 对矩阵的所有列组合执行计算
- spring - Kotlin 内部类作为 Spring Bean
- python - Python 装饰器跳过被装饰函数的代码
- ios - '<...> 不是一个有效的 NSFetchRequest。'
- vue.js - 无法用vue-charts绘制散点图
- node.js - Mongoose Model.find().select() 如果 Select 是空字符串,返回什么?