我在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错误[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)
最佳答案
当通过不同的类加载器加载类时,会发生这种情况。即使包和类名相同,Java也会将它们区分开。
您需要找出以哪种方式加载此类。第一步,找到包含该类的罐子。
or/and read this on SO