解决Weblogic 12c中的java.lang.Linkage错误

时间:2019-05-15 09:49:51

标签: java weblogic

在Weblogic 12c中启动JAXBElement时遇到链接错误。 修复它花了我几天的时间,但我仍然对此一无所知。

系统使用SOAP与另一个系统进行通信。 当系统通过以下代码创建信封时。 它会抛出java.lang.LinkageError

JAXBElement jaxbElement = new JAXBElement(new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope"), envelopeObj.getClass(), null, envelopeObj);
Caused by: java.lang.LinkageError: loading 
constraint violation when resolving method "javax/xml/bind/JAXBElement.<init>(Ljavax/xml/namespace/QName;Ljava/lang/Class;Ljava/lang/Object;)V" : loader "weblogic/utils/classloaders/ChangeAwareClassLoader@cb641394" of class "com/project/common/CommonUtil" and loader "com/ibm/oti/vm/BootstrapClassLoader@41c7613d" of class "javax/xml/bind/JAXBElement" have different types for the method signature

使用weblogic.xml将classLoader的优先级设置为PARENT_LAST

<wls:weblogic-web-app
    xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd 
    http://xmlns.oracle.com/weblogic/weblogic-web-app 
    http://xmlns.oracle.com/weblogic/weblogic-web-app/1.8/weblogic-web-app.xsd">

    <wls:weblogic-version>12.2.1</wls:weblogic-version>
    <wls:container-descriptor>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
    </wls:container-descriptor>
</wls:weblogic-web-app>

0 个答案:

没有答案