英文:
Weblogic classloader issue
问题
我在Weblogic类加载器方面遇到了问题。
当我尝试在WL 12.2.1.2.0上部署我的应用时,它失败了。
在我的服务器日志中,我看到:
java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
这个类属于xml-apis
库。该库通过另一个依赖项进入我的应用程序(因此是传递性依赖项)。xml-apis
的版本是1.4.01。
之后,我在我的部署描述符中添加了异常:
<container-descriptor>
<prefer-application-packages>
<package-name>org.w3c.dom.*</package-name>
</prefer-application-packages>
</container-descriptor>
然后进行了新的部署。关于org.w3c.dom.ElementTraversal
的描述问题得到了解决。不再有关于缺少org.w3c.dom.ElementTraversal
类的任何信息。
但是出现了一个新问题:
java.lang.ClassNotFoundException: org.w3c.dom.Document
经过分析,我发现org.w3c.dom.Document
类来自JRE(jre/lib/rt.jar)。
所以在部署描述符中我说:
“如果我需要从org.w3c.dom.*
包中获取内容,请从我的应用程序分发中加载”。现在存在这样的不一致性。
我曾想使用WL类加载器分析工具(CAT),但由于部署失败,这是不可能的。
从我的ear中排除xml-apis
和xerces
库,我们在这里提到的方法没有帮助我。
有人有办法解决我的问题吗?
提前感谢您的回答。
英文:
I have a problem with Weblogic classloader.
When I try to deploy my app on WL 12.2.1.2.0 it fails.
In the logs on my server I see
java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
The class belongs to xml-apis
library. The library comes into my app with another dependency(so as transitive dependency). The version of xml-apis
is 1.4.01.
After that I added exception in my deployment descriptor:
<container-descriptor>
<prefer-application-packages>
<package-name>org.w3c.dom.*</package-name>
</prefer-application-packages>
</container-descriptor>
And later a new deployment. The described issue with org.w3c.dom.ElementTraversal
was solved. There is no any information about missing org.w3c.dom.ElementTraversal
class anymore.
But there is a new issue:
java.lang.ClassNotFoundException: org.w3c.dom.Document
After analysis I figured out that org.w3c.dom.Document
class comes from JRE(jre/lib/rt.jar).
So in deployment descriptor I've said:
"if I need something from org.w3c.dom.*
package - please load it from my app distribution". And now there is such inconsistency.
I've had idea to use WL Classloader Analysis Tool(CAT) but it is impossible because the deploy was failed.
Excluding xml-apis
and xerces
libraries from my ear we mentioned here didn't help me.
Does anybody have idea how to solve my problem?
Thanks in advance for your answers.
答案1
得分: 0
从我的EAR中排除xercexImpl
库,而不更改部署描述符,解决了我的问题。在新部署期间提到的类是从WL分发中加载的。
英文:
Excluding xercexImpl
library from my EAR without changing the deployment descriptor was solved my problem. Mentioned classes during new deployment were loaded from WL distribution.
专注分享java语言的经验与见解,让所有开发者获益!
评论