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:
- Making all dependencies provided
- Adding
dom4j
to my dependencies(似乎没有必要,因为gradle dependencies
显示它作为一个孩子多个休眠库) - Ensure there is only one
dom4j
jar in the classpath(有我在所有的战争没有库)
除了这些来自其它来源:
- Adding
Dependencies: org.dom4j
to MANIFEST.MF - Adding
jboss-deployment-structure.xml
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)引起的。作为参考,通过管理控制台对我的数据源进行的连接测试是成功的,并且就我所知,连接详细信息都是正确的。
您有类加载器 – Jens
一个问题@Jens我没有做任何的类加载自己,虽然我知道WildFly是在部署过程中。你能否扩展问题可能源于何处? – MTCoster
jboss有多个类加载器。所以它看起来像你在不同的类加载器上多次使用dom4j jar – Jens