Spring Boot打包jar运行报错springSecurityFilterChain Bean创建失败求助
Spring Boot打包jar后启动springSecurityFilterChain Bean创建失败解决方案
问题现象
- Eclipse本地运行Spring Boot应用一切正常
- 执行打包命令
mvn package -Dmaven.test.skip=true构建jar包完成后,执行启动命令java -jar nameApplication.jar时报错启动失败 - 核心错误栈信息:类路径资源
org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class中定义的名为springSecurityFilterChain的Bean创建失败,根因抛出java.lang.NoClassDefFoundError: org/springframework/boot/configurationprocessor/json/JSONException异常
问题根因
spring-boot-configuration-processor属于编译期依赖,默认作用域为编译阶段,不会被打包进最终生成的可执行jar包中。原有代码在运行时的安全认证失败响应逻辑中,调用了该依赖下的JSONObject类构造返回JSON,本地Eclipse运行时会加载编译期依赖因此无报错,打包后运行环境缺少对应类导致抛出类未找到错误。
解决方案
修改安全认证失败响应的JSON构造逻辑:将原本使用spring-boot-configuration-processor包下JSONObject构建JSON的逻辑,替换为手动拼接JSON字符串,修改后重新打包启动jar即可正常运行。
内容的提问来源于stack exchange,提问作者Edson Jose de Souza
相关产品推荐
相关产品推荐

