Java 调试类CastException

Java 调试类CastException,java,classloader,Java,Classloader,我遇到一个ClassCastException: 无法将my.package.classA强制转换为my.package.classA。 请注意,(规范)类(名称)是相同的 我理解这应该与不同的类装入器和/或从不同的jar装入类有关。 该项目是使用Maven构建的。 我是否可以调试每种情况下使用的类加载器以及从哪个jar加载的类?为ClassCastException添加断点。 对于IntelliJ,这看起来像这样: 捕捉到异常后,在调试器调用层次结构中导航,直到找到应执行强制转换的行,并且有

我遇到一个
ClassCastException

无法将my.package.classA强制转换为my.package.classA。

请注意,(规范)类(名称)是相同的

我理解这应该与不同的类装入器和/或从不同的jar装入类有关。 该项目是使用Maven构建的。
我是否可以调试每种情况下使用的类加载器以及从哪个jar加载的类?

ClassCastException
添加断点。 对于IntelliJ,这看起来像这样:

捕捉到异常后,在调试器调用层次结构中导航,直到找到应执行强制转换的行,并且有对这两个类的引用

例如:

现在,您可以检查这两个类(在我的例子中是
typeClass
instanceClass
)。该类持有对其类装入器的引用

在我的例子中,它是服务模块加载器中模块“my.ear”的
modulelassloader
和
Service Module Loader中模块“my web app.war”的模块ClassLoader

正如你所看到的,一类来自耳朵,另一类来自战争

将依赖项更改为web应用程序
pom.xml
中提供的
,这将解决问题。

请注意,war文件将不再在ear之外运行,如果两种情况都需要,请使用