我正在体验
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服务器之间有效地不可移植有帮助。
答案 0 :(得分:1)
我需要分析你的类路径以确定,但是当我部署包含不同版本的hibernate的应用程序而不是wildfly中包含的应用程序时,我遇到了类似的错误。如果你正在使用休眠,那么开始调查是个好点。如果没有,那么检查是否有一些(传递性)依赖性与wildfly中包含的内容冲突。