Spring Boot应用因SpringApplicationBuilder版本冲突启动失败求解决方案
错误根本原因
你遇到的是Spring Boot与Spring Cloud大版本不兼容问题:
你当前使用的Camden.SR6是2017年发布的初代Spring Cloud版本,仅适配Spring Boot 1.4.x、1.5.x,和你用的Spring Boot 2.4.5跨了好几个大版本,底层API变动很大,自然会出现方法不存在的启动报错。
另外你的pom里重复声明了3次lombok依赖,可直接清理到只剩1份。
可行修复方案(二选一即可)
方案1:升级Spring Cloud版本适配Spring Boot 2.4.5(推荐,可使用新特性)
修改dependencyManagement中的spring-cloud依赖版本,同时替换废弃的eureka依赖:
<!-- 保留parent部分不变,还是2.4.5 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.5</version> </parent> <dependencies> <!-- 其他web、test依赖不变,删除重复的lombok,仅留1份 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- 替换原来的旧eureka依赖,不需要写版本,由cloud依赖统一管理 --> <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> <!-- 2020.0.x是对应Spring Boot 2.4.x的官方匹配版本 --> <version>2020.0.3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
注意:Spring Cloud 2020.0.x默认禁用了bootstrap配置加载,如果你的项目用到bootstrap.properties/bootstrap.yml,需要额外引入依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
方案2:降级Spring Boot版本适配旧版Spring Cloud
如果你必须使用Camden版本的Spring Cloud,直接把Spring Boot版本降到1.5.x分支即可:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <!-- 1.5.22是1.5.x分支最终稳定版,完美适配Camden.SR6 --> <version>1.5.22.RELEASE</version> </parent> <!-- 其余依赖和dependencyManagement部分不需要改,同样删除重复的lombok即可 -->
内容的提问来源于stack exchange,提问作者shalabh
相关产品推荐
相关产品推荐

