同类间发生cannot-be-cast-to的问题

Lin2J
2021-04-19 / 0 评论 / 522 阅读
温馨提示:
本文最后更新于2021-04-19,若内容或图片失效,请留言反馈。

问题:

今天再用 hutoolObjectUtil 进行对象克隆的时候,发生了转型异常。

java.lang.ClassCastException: xx.xx.HttpCmdProperties cannot be cast to xx.xx.cmd.HttpCmdProperties

可以肯定的是,类的全限定名是一致的,是同一个类,但是竟然不能转型。

解决办法:

去掉 热加载依赖,如果有的话。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>provided</scope>
        <optional>true</optional>
    </dependency>

因为为了实现热部署,Devtools原有自己的类加载器,进行更新,由于类加载器的不同导致类型转换失败。

也就是虽然类的全限定名称一致,但是类加载器不是同一个,所以不能算是同一个类。

可以看看 这篇 文章关于加载器的内容。