java - WildFly 14 - java.lang.ClassCastException:org.dom4j.DocumentFactory 无法转换为 org.dom4j.DocumentFactory
问题描述
我有一个运行在 WildFly 8.2.1.Final 版本上的应用程序完美,没有问题。但是我想将服务器版本从 8.2.1.Final 升级到 14.0.1.Final 并且在将数据源添加到 14.0.1.Final 之后,我正在启动应用程序并遇到错误。
- 我试图将提供的范围添加到 hibernate-core 依赖项但没有解决。
- 我尝试将 dom4j 添加为 maven 依赖项,但未解决。
- 我从 WildFly 模块中删除了 dom4j.jar 并添加为 maven 依赖项,但这次我遇到了模块加载问题。
这个问题的解决方案是什么?
13:32:25,121 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 17) MSC000001: Failed to start service jboss.persistenceunit."warName.war#persistenceUnitName": org.jboss.msc.service.StartException in service jboss.persistenceunit."warName.war#persistenceUnitName": java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:195)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:125)
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:650)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:209)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
at org.jboss.threads.JBossThread.run(JBossThread.java:485)
Caused by: java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
at org.dom4j.DocumentFactory.getInstance(DocumentFactory.java:97)
at org.hibernate.internal.util.xml.XMLHelper$1.doWork(XMLHelper.java:33)
at org.hibernate.internal.util.xml.XMLHelper$1.doWork(XMLHelper.java:27)
at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.workWithClassLoader(ClassLoaderServiceImpl.java:483)
at org.hibernate.internal.util.xml.XMLHelper.<init>(XMLHelper.java:26)
at org.hibernate.envers.boot.internal.EnversServiceImpl.initialize(EnversServiceImpl.java:116)
at org.hibernate.envers.boot.internal.AdditionalJaxbMappingProducerImpl.produceAdditionalMappings(AdditionalJaxbMappingProducerImpl.java:101)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:297)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:904)
at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:935)
at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:167)
... 9 more
13:32:25,133 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 1) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "warName.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"warName.war#persistenceUnitName\"" => "java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
Caused by: java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory"}}
13:32:25,135 ERROR [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0021: Deploy of deployment "warName.war" was rolled back with the following failure message:
{"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"warName.war#persistenceUnitName\"" => "java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
Caused by: java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory"}}
13:32:25,155 INFO [org.jboss.as.jpa] (ServerService Thread Pool -- 17) WFLYJPA0011: Stopping Persistence Unit (phase 1 of 2) Service 'warName.war#persistenceUnitName'
13:32:25,376 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) WFLYSRV0028: Stopped deployment authentication.war (runtime-name: warName.war) in 241ms
[2018-10-20 01:32:25,481] Artifact module:war: Error during artifact deployment. See server log for details.
[2018-10-20 01:32:25,482] Artifact module:war: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"warName.war#persistenceUnitName\"" => "java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
Caused by: java.lang.ClassCastException: org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory"}}
解决方案
修改pom.xml中的依赖hibernate-core:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.6.Final</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
</exclusion>
</exclusions>
</dependency>
添加exclusion
标签。然后清理并构建。它对我有用。
推荐阅读
- android - 有没有一种优雅的方式来保存和恢复 Kotlin 中的视图状态?
- amazon-web-services - 在轮询之前从 AWS SQS 队列中删除一些消息
- gremlin - aws 海王星因大图下降而超时 ()
- c++ - 必需:以字符串模 11 存储的大数(最多 1000 位)
- kernel - 在内核树外编译 ebpf _kern.c 并将独立的 libbpf 链接到 _user.c
- r - 使用 dplyr 删除多个变量的所有重复项
- php - Paypal - 通过更改计划或数量来修改订阅
- php - 如何修复:PHP 注意:未定义索引
- opencv - 如何找到识别图像中的某些形状?
- regex - 正则表达式不触发 VBA