Spring Boot集成Eureka出现ConfigurationBeanFactoryMetadata类找不到异常如何解决
问题根因
- Spring Boot与Spring Cloud版本不兼容:你当前使用的Spring Boot 2.5.4版本,和依赖的Spring Cloud Hoxton.SR12版本不匹配,Hoxton版本最高仅支持到Spring Boot 2.3.x。
org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata类在Spring Boot 2.4及以上版本已经被移除,旧版本Spring Cloud仍依赖该类,因此启动抛出类找不到异常。 - Eureka依赖坐标已废弃:你使用的
spring-cloud-starter-eureka-server是Spring Cloud早期版本的废弃坐标,新版Netflix Eureka服务端坐标已更名为spring-cloud-starter-netflix-eureka-server。 - pom文件存在语法错误:properties节点下
<java.version>16</java.version>后多了冗余的</docker.artifact.version>闭合标签,会导致构建异常。
解决方案
推荐升级Spring Cloud版本适配当前Spring Boot 2.5.4,修正依赖配置即可解决问题,操作步骤如下:
- 将
spring-cloud-dependencies的版本替换为2020.0.3(Spring Cloud Ilford SR3,官方适配Spring Boot 2.4.x~2.5.x版本) - 删除原有
spring-cloud-starter-eureka-server依赖,替换为新版Eureka服务端坐标,不需要手动指定版本,由spring-cloud-dependencies统一管理版本 - 删除properties节点中冗余的
</docker.artifact.version>标签
修正后完整pom.xml配置
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.4</version> <relativePath/> </parent> <groupId>io.x</groupId> <artifactId>eureka-server</artifactId> <version>0.0.1-SNAPSHOT</version> <name>eureka-server</name> <description>Eureka server</description> <properties> <java.version>16</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2020.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
可选降级方案
如果你需要继续使用Hoxton版本的Spring Cloud,可以将Spring Boot版本降到2.3.12.RELEASE,也可以解决该报错。
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

