2016-08-02 79 views
1

UPDATE:在销毁WildFly实例并从头开始重新配置之后,该错误神奇地将自己解析为重复列的org.hibernate.MappingException。现在我真的知道问题是什么,我可以开始修复它。将Hibernate应用程序部署到Wildfly 10 - org.dom4j.DocumentFactory ClassCastException


我目前正在评估在JPA 10 WildFly支持。然而由Hibernate,在尝试部署我的测试war(由内置的gradle)产生一个看似不相关的错误。下面是从控制台日志行:

11:11:0.62错误[org.jboss.as.controller.management操作(管理任务-8)WFLYCTL0013:操作( “添加”)失败 - 地址:([(“deployment”=>“TestWar.war”))) - 失败描述:{“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 can not be cast to org.dom4j.DocumentFactory

引起:java.lang.ClassCastException:org.dom4j.DocumentFactory无法转换为org.dom4j.DocumentFactory“}}

从我build.gradle

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' 
} 

我试图从类似的帖子下面的解决方案上SO:

除了这些来自其它来源:

 

<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)引起的。作为参考,通过管理控制台对我的数据源进行的连接测试是成功的,并且就我所知,连接详细信息都是正确的。

+0

您有类加载器 – Jens

+0

一个问题@Jens我没有做任何的类加载自己,虽然我知道WildFly是在部署过程中。你能否扩展问题可能源于何处? – MTCoster

+0

jboss有多个类加载器。所以它看起来像你在不同的类加载器上多次使用dom4j jar – Jens

回答

1

发生此错误(此刻),因为您在依赖项列表中包含了EntityManager。删除。正常操作时不需要它。

看到这个休眠吉拉在这个问题上:org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory

+0

由于错误现在已经解决,我现在无法测试。如果它回来了,我会尝试一下。但是为什么当依赖关系全部列出时,这会有所作为?其中没有一个实际上被复制到战争 – MTCoster

+0

EntityManger jar中有旧的org.dom4j jar,所以即使你可能从wildfly获取它,它仍然无法加载。 –