Spring启动报LoadBalancerClientsProperties类找不到错误
问题原因
抛出ClassNotFoundException: org.springframework.cloud.client.loadbalancer.LoadBalancerClientsProperties错误的核心原因是Spring Cloud组件版本不兼容。
从错误栈可以看到你当前使用的Spring Boot版本为2.7.1,但你在pom.xml中手动为不同Spring Cloud组件指定了混乱的版本号:spring-cloud-config-client指定为3.0.1,spring-cloud-starter-netflix-eureka-client、spring-cloud-starter-bootstrap指定为3.1.3。不同小版本的Spring Cloud组件依赖的基础包版本不统一,3.1.x版本组件需要的LoadBalancerClientsProperties类在低版本的spring-cloud-commons包中不存在,最终触发类找不到错误。
解决步骤
- 移除pom.xml中所有Spring Cloud相关依赖上手动添加的
<version>标签,不要单独为每个Spring Cloud组件指定版本 - 在pom.xml中添加Spring Cloud官方BOM依赖,通过BOM统一管理所有Spring Cloud组件的版本,自动匹配和Spring Boot 2.7.x兼容的版本,配置内容放在
<project>节点下即可:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>2021.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
- 如果你仅需要从配置服务读取配置、不需要使用Eureka服务发现能力,直接删除
spring-cloud-starter-netflix-eureka-client依赖即可。该依赖会自动引入负载均衡相关组件,不需要的场景下保留只会增加依赖冲突概率 - 执行Maven命令
mvn clean install -U强制拉取更新依赖、清除本地旧版本依赖缓存,重启应用即可正常启动
提示:Spring Boot和Spring Cloud存在严格的官方版本对应关系,禁止手动为单个Spring Cloud组件指定版本,必须通过官方BOM统一管理版本,否则极易出现类缺失、方法不存在这类依赖冲突问题。
内容的提问来源于stack exchange,提问作者donaldjbrewer
相关产品推荐
相关产品推荐

