我正试图从wildfly9转移到wildfly 10。 我的代码在wildfly9上正常运行 但是当我尝试在wildfly 10上部署我的ejb模块时,我收到以下错误:
java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
我尝试了所有可用的选项以纠正此错误,但没有任何帮助。
以下是我在pom中的依赖关系
<dependencies>
<dependency>
<groupId>za.co.ecommunicate</groupId>
<artifactId>pl4sms-billing</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- ehcache dependency -->
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>5.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
<!-- ehcache dependency -->
<dependency>
<groupId>za.co.ecommunicate</groupId>
<artifactId>pl4sms-persistence</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- dependencies require for test asserts -->
<!-- <dependency> <groupId>za.co.ecommunicate</groupId> <artifactId>pl4sms-web</artifactId>
<version>1.0-SNAPSHOT</version> </dependency> -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.13</version>
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>tomee-embedded</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
根据可用的解决方案,我发现问题与hibernate有关,我已经更新了hibernate依赖项,更改了范围并且还添加了dom4j依赖项,但没有任何效果。
在wildfly 9上部署相同的模块没有任何问题。
任何人都可以帮我解决这个错误。
答案 0 :(得分:1)
我发现我的问题的解决方案可能会帮助别人。 我从this blog得到了解决方案。
我在战争的MANIFEST.MF文件中添加了该行:
Dependencies: org.dom4j export
并在persistence.xml中添加以下行:
<property name="hibernate.listeners.envers.autoRegister" value="false"/ >
它对我有用。
答案 1 :(得分:0)
你的问题是:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.0.Final</version>
</dependency>
它引入了旧的dom4j jar:引用此票证:org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory。
您需要将其删除,在范围内将其声明为provided
,或者不在Wildfly服务器上运行该应用程序(这可能不是您的首选选项)。