hibernate - 将Hibernate应用程序部署到Wildfly 10-org.dom4j.DocumentFactory ClassCastException

标签 hibernate jpa jakarta-ee gradle wildfly

更新:oxt_rstrong现在,我实际上知道了问题所在,可以开始解决它了。

我目前正在评估WildFly 10中Hibernate支持的JPA。但是,在尝试部署我的测试 war (由gradle构建)时,会产生看似无关的错误。以下是控制台日志中的行:

11:11:06,200 ERROR [org.jboss.as.controller.management-operation] (management task-8) WFLYCTL0013: Operation ("add") failed - address: ([("deployment" => "TestWar.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.persistenceunit.\"TestWar.war#com.myapp.testwar.jpa\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"TestWar.war#com.myapp.testwar.jpa\": 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"}}



从我的org.hibernate.MappingException:
group 'com.myapp'
name 'TestWar'
version '0.0.0-dev'

apply plugin: 'java'
apply plugin: 'war'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    provided
}

sourceSets {
    main {
        compileClasspath += configurations.provided
    }
}

dependencies {
    provided group: 'dom4j', name: 'dom4j', version: '1.6.1'
    provided group: 'javax.enterprise', name: 'cdi-api', version: '1.2'
    provided group: 'javax.inject', name: 'javax.inject', version: '1'
    provided group: 'org.hibernate', name: 'hibernate-core', version: '5.0.7.Final'
    provided group: 'org.hibernate', name: 'hibernate-entitymanager', version: '5.0.7.Final'
    provided group: 'org.hibernate', name: 'hibernate-envers', version: '5.0.7.Final'
    provided group: 'org.hibernate', name: 'hibernate-java8', version: '5.0.7.Final'
    provided group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: '1.0.0.Final'
    provided group: 'org.jboss.spec.javax.annotation', name: 'jboss-annotations-api_1.2_spec', version: '1.0.0.Final'
    provided group: 'org.jboss.spec.javax.ejb', name: 'jboss-ejb-api_3.2_spec', version: '1.0.0.Final'
    provided group: 'org.jboss.spec.javax.sql', name: 'jboss-javax-sql-api_7.0_spec', version: '2.0.0.Final'
    provided group: 'org.jboss.spec.javax.ws.rs', name: 'jboss-jaxrs-api_2.0_spec', version: '1.0.0.Final'
    provided group: 'org.postgresql', name: 'postgresql', version: '9.4.1209'
}

我从类似的帖子中尝试了以下解决方案:
  • Making all dependencies provided
  • Adding build.gradle to my dependencies(似乎不必要,因为dom4j将其显示为多个休眠库的子代)
  • Ensure there is only one gradle dependencies jar in the classpath(我的 war 中根本没有图书馆)

  • 以及其他来源的这些:
  • Adding dom4j to MANIFEST.MF
  • Adding Dependencies: org.dom4j with the following content:

  • <jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
      <deployment>
        <dependencies>
          <module name="org.dom4j"/>
        </dependencies>
        <local-last value="true"/>
      </deployment>
    </jboss-deployment-structure>
    

    有人有其他建议吗,还是我做过一些愚蠢的事情?

    编辑:显然,此错误可能是由任何数据源配置问题引起的(请参阅here)。作为引用,通过管理控制台对我的数据源的连接测试成功,并且据我所知所有连接详细信息都是正确的。

    最佳答案

    之所以会发生此错误,是因为您在依赖项列表中包含了EntityManager。删除它。正常操作不需要它。

    有关此问题,请参见此Hibernate Jira:org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory

    关于hibernate - 将Hibernate应用程序部署到Wildfly 10-org.dom4j.DocumentFactory ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38719498/

    相关文章:

    hibernate - 如何动态更改 Spring Boot 实体中的架构?

    java - 有没有办法将分离的对象传递给 JPA 持久化? (分离的实体传递给持久化)

    java - Hibernate 中级/高级教程

    mysql - 在 spring 中,如何在一次迭代发生事务回滚后继续来自 Controller for 循环的请求

    java - GlassFish 4 或 Tyrus 中的错误 : Decoder#willDecode is called twice for each ByteBuffer?

    maven - 部署Maven项目抛出java.util.zip.ZipException : invalid LOC header (bad signature)

    java - iText PdfTextExtractor getTextFromPage 异常 "Error reading string at file pointer"

    java - 如何在 Hibernate/JPA 中定义共享序列生成器?

    java - jpa插入行时应返回用于主键列的序列号

    java - Hibernate JPQL 抛出无法输入更新/删除查询