当前位置: 首页 > 知识库问答 >
问题:

LinkageError:加载约束冲突

封永嘉
2023-03-14

我见过其他的链接错误,但没有一个能说明如何使用罐子。当我在Jboss中部署我的应用程序时,它可以正常工作,但当我将应用程序部署到websphere时,我遇到了这种链接错误。在这里可以找到一个类似的问题:调用webservice方法时出现LinkageError,但不确定如何修复它

它主要是从com/ibm/oti/vm/BootstrapClassLoadercom/ibm/ws/classloader/CompoundClassLoader加载的,带有共享类javax/xml/soap/SOAPFault

Caused by: java.lang.LinkageError: loading constraint violation: loader "com/ibm/oti/vm/BootstrapClassLoader@dda62209" previously initiated loading for a different type with name "javax/xml/soap/SOAPFault" defined by loader "com/ibm/ws/classloader/CompoundClassLoader@fdebcda2"
        at com.ibm.oti.vm.VM.findClassOrNull(Native Method)
        at com.ibm.oti.vm.BootstrapClassLoader.loadClass(BootstrapClassLoader.java:63)
        at javax.xml.ws.soap.SOAPFaultException.<init>(SOAPFaultException.java:78)
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160)
        at com.sun.proxy.$Proxy118.collectionsInquiryV2(Unknown Source)

我所拥有的是jsp调用Web服务。从消息中,我看到的唯一jars来自axis.jar,其中包含javax/xml/皂/SOAPFault类

这是否意味着我需要从axis.jar?中删除SOAPFault.class(它不工作尝试和其他Web服务将失败,如果这被删除)

共有1个答案

骆昊阳
2023-03-14

您的应用程序中是否有SOAP API jar?“加载约束冲突”LinkageError通常意味着通过两个不同的类加载器对一个类的重复可见性。我猜这里发生的基于堆栈的情况是您的应用程序具有SOAP API,但没有JAX-WS API。当JAX-WS类引用SOAP类时,这意味着您应用程序中的类可以从两个不同的加载器“看到”SOAP API——直接、在本地类加载器中,间接通过JAX-WS API。

最简单的答案就是去掉应用程序中的任何SOAP API jar——你可以依赖服务器中的副本,除非你有真正特定的版本需求。或者,您可以将JAX-WS API jar添加到应用程序包中,以便应用程序加载自己的API副本,而不是从服务器中提取它。

 类似资料: