You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SpringBoot 3.1.4启动时BeanRegistrationExcludeFilter类找不到异常求助

SpringBoot 3.1.4启动时BeanRegistrationExcludeFilter类找不到异常的排查与解决

问题描述

使用SpringBoot 3.1.4、JDK17及STS 4.20.1开发工具,启动应用时出现BeanRegistrationExcludeFilter类找不到异常,报错信息如下:

Exception in thread "main" java.lang.IllegalArgumentException: Cannot instantiate interface org.springframework.context.ApplicationContextInitializer : org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer
    at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:449)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:431)
    at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:424)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:266)
    at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:245)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
    at com.fis.mbp.api.process.rate.ProcessRateDsmApplication.main(ProcessRateDsmApplication.java:51)
Caused by: java.lang.NoClassDefFoundError: org/springframework/beans/factory/aot/BeanRegistrationExcludeFilter
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:467)
    at org.springframework.util.ClassUtils.forName(ClassUtils.java:284)
    at org.springframework.boot.SpringApplication.createSpringFactoriesInstances(SpringApplication.java:442)
    ... 7 more
Caused by: java.lang.ClassNotFoundException: org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
    ... 20 more

问题分析

这并非SpringBoot 3.1.4的已知问题,核心原因是Spring Framework版本不兼容或依赖冲突:
BeanRegistrationExcludeFilter是Spring Framework 6.0+的核心类,而SpringBoot 3.x系列默认依赖Spring Framework 6.x。出现类找不到的情况,通常是项目中混入了低版本Spring Framework依赖,或者依赖管理配置导致版本不一致。

解决方案与临时办法

  • 统一依赖版本:如果使用Maven,确保spring-boot-starter-parent作为项目父依赖,它会自动管理所有Spring生态依赖的版本,避免手动指定版本引发冲突:
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.4</version>
    <relativePath/> <!-- 从仓库查找父依赖 -->
</parent>

如果是Gradle项目,使用SpringBoot插件来管理版本:

plugins {
    id 'org.springframework.boot' version '3.1.4'
    id 'io.spring.dependency-management' version '1.1.3'
}
  • 清理并刷新依赖:执行命令清除本地仓库中可能损坏或不兼容的依赖,重新构建项目:
    • Maven:mvn clean install -U
    • Gradle:./gradlew clean build --refresh-dependencies
  • 检查开发工具配置:确认STS中项目的JDK版本为17,且STS的Maven/Gradle全局配置未强制指定低版本Spring依赖。
  • 临时应急方案:若需紧急启动应用,可尝试升级到SpringBoot 3.1.x最新版本(如3.1.5),新版本通常会修复部分依赖适配问题;或通过依赖排除规则移除冲突的低版本Spring模块。

内容的提问来源于stack exchange,提问作者Kakx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:26:01