Camunda:不能演员(同班)

时间:2017-08-22 18:57:51

标签: java maven camunda

我在我的maven项目中添加了.jar,在pom.xml中写了这个:

<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 ERROR [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。屋           在org.loopingdoge.acme.services.HouseAdder.execute(HouseAdder.java:13)

3 个答案:

答案 0 :(得分:2)

当一个类被加载到不同的类加载器上时会发生这种情况。即使package和classname相同,java也会使它们不同。

您需要了解此类将加载的方式。首先,找到包含该类的罐子。

or/and read this on SO

答案 1 :(得分:0)

我猜你在多个地方都有班级,例如在WildFly和您部署的WAR中打包jar。检查类路径上只有一次类。

顺便说一句:如果不是绝对必要,最好不要使用系统依赖。这就是maven存储库的用途。

答案 2 :(得分:0)

遇到同样的问题。进一步的分析表明,使用了两个不同的类加载器,如本线程中所述。在我的案例中,罪魁祸首是弹簧靴的devtools,这可能是许多人在pom中活跃的工具。看来devtools与带有嵌入式camunda引擎的camunda java委托不能很好地配合。