现象
昨天还运行的好好的 Spring Boot,今天运行报错了,报错信息:java.lang.IllegalArgumentException: Unable to instantiate factory class: org.springframework.boot.env.EnvironmentPostProcessor
解决
对于错误堆栈信息一脸懵,只能 maven clean、maven 刷新,检查 pom 文件,启动还是报错;
百度没查到原因,谷歌了下,stackoverflow 上有一个类似的问题:java.lang.IllegalArgumentException: Unable to instantiate factory class: org.springframework.boot.env.EnvironmentPostProcessor
后来提问者自己解决了问题,是 jdk/jre/lib、.m2/repository 下都有 Spring 的 jar 包,并且都在运行的 classpath 路径下,删除旧的 jar 包就行了。
查看 idea 运行的 classpath,发现有重复的 Spring 的 jar 包,而且版本不一样,想起这几天做过一次版本升级,应该是这个问题。
于是在 idea 中打开项目结构,删除了 jdk 之外的所有的包,然后 maven 刷新重新导入,就 ok 了。
在这里插入图片描述
总结
在做版本更换时,一定要删除旧的 jar 包,并且检查类路径下是否有重复 jar 包