我在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

10-07 12:27