在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>