ClassCastException:org.dom4j.DocumentFactory无法强制转换为WildFly 13中的org.dom4j.DocumentFactory

时间:2018-06-13 13:29:49

标签: java-ee wildfly classcastexception java-ee-7 classloading

我正在体验

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中获取依赖关系/搜索和加载类。

A bloated thread in the JBoss forums about a class cast exception which didn't occur with GlassFish提供的解决方案不适用于我的应用程序。

有趣的是,甚至没有排除提供org.dom4j.DocumentFactory的所有传递依赖项,这使得应用程序在Java EE服务器之间有效地不可移植有帮助。

1 个答案:

答案 0 :(得分:1)

我需要分析你的类路径以确定,但是当我部署包含不同版本的hibernate的应用程序而不是wildfly中包含的应用程序时,我遇到了类似的错误。如果你正在使用休眠,那么开始调查是个好点。如果没有,那么检查是否有一些(传递性)依赖性与wildfly中包含的内容冲突。