2016-08-02 80 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獲取它,它仍然無法加載。 –