gpt4 book ai didi

java - 调试 ClassCastException

转载 作者:行者123 更新时间:2023-12-03 23:43:47 29 4
gpt4 key购买 nike

我遇到了 ClassCastException :Cannot cast my.package.classA to my.package.classA.请注意,(规范)类(名称)是相同的。
我知道这应该与不同的类加载器和/或从不同的 jar 加载类有关。
该项目是使用 Maven 构建的。
我可以以某种方式调试在每种情况下使用了哪个类加载器以及从哪个 jar 加载了类?

最佳答案

ClassCastException 添加断点.
对于 IntelliJ,这看起来像这样:
IntelliJ breakpoint
捕获异常后,在调试器调用层次结构中导航,直到找到应该发生强制转换的行并且您拥有对这两个类的引用。
例如:
enter image description here
现在,您可以检查这两个类(在我的情况下是 typeClassinstanceClass )。该类持有对其类加载器的引用。
就我而言,它是 ModuleClassLoader for Module "my.ear" from Service Module LoaderModuleClassLoader for Module "my-web-app.war" from Service Module Loader enter image description here
如您所见,一类来自耳朵,另一类来自 war 。
将依赖项更改为 provided在网络应用程序中 pom.xml ,应该可以解决问题。
请注意,war 文件将不再在耳朵之外运行,如果您需要这两种情况,请使用 Maven profile .

关于java - 调试 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64133826/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com