我正在经历
java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
在部署到 WildFly 13.0.0.Final 期间,应用程序在我指定的 Payara 4.1.2.181 和 5.181 上部署良好
<class-loader delegate="false"/>
在WEB-INF/glassfish-web.xml
. 我假设类转换异常是由类加载问题引起的(因为由不同的类加载器加载的两个相同的类被认为是不相同的)<class-loader delegate="false"/>
,因此我假设为 WildFly 指定等效项是 KISS 解决方案。
关于在不同的 Java EE 服务器中(分层)使用类加载器有很多术语(因为 Java EE 没有指定它),我开始阅读 WildFly 的概念,但是我将在 GlassFish/Payara 中表达我正在寻找的内容条款:避免类加载委托,并首先从部署的 WAR 中获取依赖项/搜索和加载类。
JBoss 论坛中关于 GlassFish 未发生的类转换异常的臃肿线程提供了一个不适用于我的应用程序的解决方案。
有趣的是,甚至不排除所有org.dom4j.DocumentFactory
使应用程序在 Java EE 服务器之间有效地不可移植的传递依赖项都有帮助。