2017-08-22 32 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仓库的用途。

相关问题