我正面临着一个问题。不能得到解决方案,如果有人可以帮助我。我正在我的代码中实现JAXB,以便通过XSD和XSLT进行XML验证。错误是JRE和Weblogic服务器之间的类冲突。应用程序无法理解要引用哪一个。
Java版本:7 Weblogic: 10.3.3 (Weblogic 11g)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving field "DATETIME" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the referring class, javax/xml/datatype/DatatypeConstants, and the class loader (instance of <bootloader>) for the field's resolved type, loader constraint violation: when resolving field "DATETIME" the class loader
at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.java:224)
at com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.java:61)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:127)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:79)
at com.sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.java:151)
at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:87)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422)
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:286)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139)
at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:211)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522)提前感谢您的帮助。
发布于 2020-07-23 18:29:20
在这里的日志中,错误显示冲突在DataTypeConstants中。实际上,我分析了weblogic中的类冲突。然后我开始了解到冲突中并不存在DataTypeConstants名称。我的错误出现在线路上:
JAXBContext obj = JAXBContext.newInstance(MyClass.class);这一行显示了NullPointerException。Jaxb-api.jar出现在我的库中,所以JAXBContext是从他们的库中加载的,内部的DataTypeConstants发生了冲突。我删除了Jaxb-api.jar,然后weblogic从JRE的rt.jar获取了我的JAXBContext和DataTypeConstants。因为这两个类都在一个jar中,所以rt.jar优先选择加载DataTypeConstants。
要了解如何分析weblogic中的类冲突,下面的链接将会有所帮助。访问https://dzone.com/articles/weblogic-classloader-analysis和https://blog.eisele.net/2011/01/using-new-weblogic-classloader-analysis.html
https://stackoverflow.com/questions/62951299
复制相似问题