2017-08-22 67 views
0

我已經包括在我的Maven項目.jar寫這在pom.xmlCamunda:不能轉換到(同一類)

<dependencies> 
    <dependency> 
     <groupId>org.loopingdoge.acme.model</groupId> 
     <artifactId>acme-model</artifactId> 
     <version>1.0.0</version> 
     <scope>system</scope> 
     <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/acme-model.jar</systemPath> 
    </dependency> 
</dependencies> 

acme-model.jar包含org.loopingdoge.acme.model.House但這投

public class HouseAdder implements JavaDelegate { 

    public void execute(DelegateExecution delegateExecution) throws Exception { 
     House house = (House) delegateExecution.getVariable("house"); 
    } 
} 

給我在部署在Wildfly服務器上時發生此錯誤:

18:50:20,255 ER ROR [org.camunda.bpm.engine.context](默認任務-45)ENGINE-16004關閉命令上下文時出現異常: org.loopingdoge.acme.model.House無法轉換爲org.loopingdoge.acme.model.House :java.lang.ClassCastException:org.loopingdoge.acme.model.House無法轉換爲org.loopingdoge.acme.model.House at org.loopingdoge.acme.services.HouseAdder.execute(HouseAdder.java:13)

回答

2

這種情況發生在一個類將被加載到不同的類加載器上時。即使包和類名相同,java也會使它們不同。

你需要找出這個類將被加載的方式。作爲第一步,找到包含該類的罐子。

or/and read this on SO

0

我想你已經在多個地方,例如類將該jar包裝在WildFly和您部署的WAR中。檢查你在類路徑中只有一次類。

順便說一句:如果不是絕對必要,最好不要使用系統依賴關係。這是maven倉庫的用途。

相關問題