Spring Boot集成OAuth2启动报springSecurityFilterChain bean创建错误如何解决
问题根因
你抛出的异常核心是java.lang.NoClassDefFoundError: org/springframework/core/log/LogMessage,这个类属于Spring Core 5.2及以上版本才内置的工具类,出现该错误的根本原因是项目中Spring相关组件版本不兼容:
- 你单独声明的
spring-security-web5.5.3版本要求Spring Core版本不低于5.3.9,而你当前项目Spring Boot内置的Spring Core版本低于该要求,导致类缺失 - 你引入的
okta-spring-boot-starter:1.5.1和当前Spring Boot、Spring Security版本存在兼容性冲突
解决方案
- 移除pom中单独声明的
spring-security-web依赖,spring-boot-starter-security已经内置了对应Spring Boot版本适配的所有Spring Security相关依赖,不需要单独声明,避免版本错乱 - 匹配okta starter和Spring Boot的版本:
okta-spring-boot-starter:1.5.1仅适配Spring Boot 2.2.x ~ 2.4.x版本,如果你的Spring Boot版本高于2.4.x,需要将okta starter升级到2.x及以上的适配版本 - 修正Security配置类的逻辑问题:你当前对
GET /路径同时配置了permitAll()和hasAuthority("SCOPE_WRITE"),后者会覆盖前者的规则,导致根路径也需要校验权限,根据你的业务需求删除重复的路径规则即可 - 清理Maven本地缓存,执行
mvn clean install重新拉取依赖后启动项目
内容的提问来源于stack exchange,提问作者trelyin
相关产品推荐
相关产品推荐

