由于pom中引入spring-boot-devtools导致,由于自带的热加载机制,会使用特定的类加载器RestartClassLoader 加载所有的classes目录下变化的class,
RestartClassLoader 与jdk的AppClassLoader的差别, AppClassLoader是 RestartClassLoader 的父classloader,而应用中第三方jar相关的类都是由AppClassLoader进行加载,而其中通过方法计算出来的结果class一般都是由AppClassLoader进行加载的类,但是用于接收的classes下面的类classloader是其子类RestartClassLoader ,用子类classloader加载的类接收父类AppClassLoader加载的类,肯定会报出ClassCastException,反过来是没有这个问题的。
报错截图
网友评论