com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject

这个错是在我本地运行的时候发现的,当时服务器上运行正常,运行环境都是JDK8:
com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject

后面我尝试切换JDK11,这时候报错信息更全面了,发现原来是RestartClassLoader的锅:
class com.alibaba.fastjson.JSONObject cannot be cast to class com.alibaba.fastjson.JSONObject (com.alibaba.fastjson.JSONObject is in unnamed module of loader 'app'; com.alibaba.fastjson.JSONObject is in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @6725b320)

解决方法

  1. 暂时先去掉 spring-boot-devtools 依赖,这是因为类加载器不同导致的问题
    2.在 resources 目录下创建 META-INF 目录,在里面创建一个 spring-devtools.properties 文件
restart.exclude.json=/com.alibaba.fastjson.*.jar

根据Spring Boot DevTools文档
可知:spring-devtools.properties 文件可以包含以restart.exclude 和restart.include 为前缀的属性。 include 属性会被“restart”类加载器加载,而 exclude 属性值会被“base”类加载器加载。该属性的值是应用于类路径的正则表达式模式

你可能感兴趣的:(com.alibaba.fastjson.JSONObject cannot be cast to com.alibaba.fastjson.JSONObject)