How do I resolve this Weblogic intermittent java.lang.LinkageError? What are the steps to understanding what it means and fix it?
Solution 1
The solution was eventually to update the weblogic-application.xml
file of the deployed app
The application used an old jaxrpc-api.jar
that we could not remove for various reason,
The solution we used to prefer the internal jar was this (Is there a better way?)
<wls:prefer-application-packages>
...
<wls:package-name>java.xml.rpc.*</wls:package-name>
</wls:prefer-application-packages>
Solution 2
Does this mean that I have 2 versions of java.xml.rpc.Service loaded? Is that so?
Yes.
How can that happen?
It happens when you have two classloaders both loading the same class. In your case, the classloaders are instances of different ClassLoader classes:
java.net.FactoryURLClassLoader
and
weblogic.utils.classloaders.ChangeAwareClassLoader
what is the way to resolve it?
I'm not a Weblogic user, but the theoretical solution is to put the JAR file containing the classes in question into the classpath of an common ancestor classloader of the two above.
Comments
-
Eran Medan almost 2 years
I have an intermittent linkage error thrown: (That's basically all the information I have)
java.lang.LinkageError loader constraint violation: when resolving field 'service' of the class loader instance of java/net/FactoryURLClassLoader) of the referring class org/apache/axis/client/Stub, and the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) for the field's resolved type, java/xml/rpc/Service, have different class objects for that type
Or in a more readable way
Exception: java.lang.LinkageError
- field:
service
- CL instance:
java.net.FactoryURLClassLoader
- reffering class:
org.apache.axis.client.Stub
- 2nd CL instance:
weblogic.utils.classloaders.ChangeAwareClassLoader
- field's resolve type:
java.xml.rpc.Service
- field:
Does this mean that I have 2 versions of java.xml.rpc.Service loaded? Is that so? How can that happen? what is the way to resolve it?
-
Chuck Glenn over 7 yearsThis appears to work only for EAR files and not for WAR files
-
oidualc over 6 yearsTrue, it works only for EAR files. To make it work on WAR files update weblogic.xml instead of weblogic-application.xml with the same snippet.