SpringFactoriesLoader无forDefaultResourceLocation方法报错求助
解决Spring Boot启动时
SpringFactoriesLoader.forDefaultResourceLocation方法找不到的问题 问题根源
这个报错是Spring版本不兼容导致的:SpringFactoriesLoader.forDefaultResourceLocation是Spring Framework 6.x(对应Spring Boot 3.x及以上版本)新增的方法,如果你的项目中混合了低版本的Spring Core依赖,或者Spring Boot与Spring Framework版本不匹配,就会出现方法找不到的错误。
具体解决步骤
确认Spring Boot版本与JDK版本匹配
Spring Boot 3.x要求使用JDK 17及以上,同时依赖Spring Framework 6.x。检查你的项目配置:- Maven项目(
pom.xml):确保spring-boot-starter-parent是3.x版本<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <!-- 示例3.x版本,可根据实际选择最新稳定版 --> <relativePath/> </parent> - Gradle项目(
build.gradle):确保Spring Boot插件是3.x版本plugins { id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' id 'java' }
同时检查项目SDK:打开
File -> Project Structure,设置Project SDK为JDK 17+,Project language level为17。- Maven项目(
排查并修复依赖冲突
项目中可能引入了低版本的spring-core依赖,导致版本冲突:- Maven执行命令查看依赖树:
搜索mvn dependency:treespring-core,如果有低于6.x的版本,找到对应的依赖,在pom.xml中排除该低版本依赖:<dependency> <groupId>冲突依赖的groupId</groupId> <artifactId>冲突依赖的artifactId</artifactId> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> </exclusions> </dependency> - Gradle执行命令查看依赖树:
找到低版本./gradlew dependenciesspring-core的来源,在build.gradle中排除:dependencies { implementation('冲突依赖的groupId:冲突依赖的artifactId') { exclude group: 'org.springframework', module: 'spring-core' } }
- Maven执行命令查看依赖树:
清理缓存并重新构建
在IntelliJ IDEA中点击File -> Invalidate Caches...,选择Invalidate and Restart清理缓存,之后执行Maven的clean+install或Gradle的clean+build命令重新构建项目。
内容的提问来源于stack exchange,提问作者Анастасия
相关产品推荐
相关产品推荐

