我在我的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)
答案 0 :(得分:2)
当一个类被加载到不同的类加载器上时会发生这种情况。即使package和classname相同,java也会使它们不同。
您需要了解此类将加载的方式。首先,找到包含该类的罐子。
答案 1 :(得分:0)
我猜你在多个地方都有班级,例如在WildFly和您部署的WAR中打包jar。检查类路径上只有一次类。
顺便说一句:如果不是绝对必要,最好不要使用系统依赖。这就是maven存储库的用途。
答案 2 :(得分:0)
遇到同样的问题。进一步的分析表明,使用了两个不同的类加载器,如本线程中所述。在我的案例中,罪魁祸首是弹簧靴的devtools,这可能是许多人在pom中活跃的工具。看来devtools与带有嵌入式camunda引擎的camunda java委托不能很好地配合。