Spring Boot 2.7.1运行时触发NoClassDefFoundError错误求解决方案
Spring Boot 2.7.1 + Spring Cloud 依赖引发 NoClassDefFoundError 的解决方案
问题背景
- 项目基于 Spring Boot 2.7.1 构建,核心配置如下:
父依赖:
业务依赖:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.1</version> </parent>
Spring Cloud 依赖管理:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cloud-connectors</artifactId> <version>2.2.13.RELEASE</version> </dependency><dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.2</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> - 运行时抛出错误:
Caused by: java.lang.NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
问题原因
ConfigurationBeanFactoryMetadata类在 Spring Boot 2.7.x 版本中已被移除,但spring-boot-starter-cloud-connectors:2.2.13.RELEASE仍依赖该类。- Spring Cloud 2020.0.2(代号 Ilford)对应的兼容 Spring Boot 版本为 2.4.x,与你使用的 2.7.1 版本存在严重版本不兼容,导致依赖链混乱。
- Spring Cloud Connectors 项目已停止维护,官方不再提供对高版本 Spring Boot 的支持。
可行解决方案
方案1:移除 spring-boot-starter-cloud-connectors 依赖
如果项目并未实际使用 Spring Cloud Connectors 的云服务绑定功能,直接删除该依赖即可解决类缺失问题。
方案2:升级 Spring Cloud 版本至兼容 Spring Boot 2.7.x 的版本
Spring Boot 2.7.x 对应的 Spring Cloud 稳定版本为 2021.0.x(代号 Jubilee),修改依赖管理中的版本号:
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.8</version> <!-- 最新稳定兼容版 --> <type>pom</type> <scope>import</scope> </dependency> </dependencies>
修改后,其他 Spring Cloud 相关依赖无需手动指定版本,由依赖管理自动统一控制,避免版本冲突。
方案3:替换 Spring Cloud Connectors 的功能(若需保留云服务集成)
如果需要云服务绑定功能,官方推荐用 Spring Cloud Kubernetes 或对应云服务商的原生 SDK(如 AWS SDK、Azure SDK)替代已停止维护的 Spring Cloud Connectors。
内容的提问来源于stack exchange,提问作者Arif
相关产品推荐
相关产品推荐

