最近在学谷粒商城项目,其中一个步骤是把 renren-fast 项目与 Spring Cloud Alibaba Nacos 整合起来,以便路由模块发现相关服务。然而在引入 common 依赖之后再运行,出现了如下报错:
java.lang.NoClassDefFoundError: org/springframework/boot/Bootstrapper
经过调查发现原因是 Spring Boot 和 Spring Cloud Alibaba 的版本冲突导致的。我的其他模块用的是 2.7.16:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.16</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
然而 renren-fast 使用的是 2.6.6,直接改成 2.7.16 之后又出现了一些其他的依赖问题,折腾了一会之后发现如下做法可以解决问题:
- 将 renren-fast 的
<parent>
标签中的版本改成和其他项目一致,我这里是改成2.7.16
- 删除 renren-fast 中
mysql-connector-java
相关的依赖,然后运行mvn clean install -U
命令(如果使用的是 Intellj IDEA,直接更新 pom 后应该会出现一个报错信息,下边有一个类似的链接,直接点击链接运行命令就可以了) - 把其他项目中 spring 的
<dependencyManagement>
复制过来,我的长这个样子:
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2021.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这三个步骤之后再运行,应该就不会再出现问题了,其实最主要的还是把 spring 的版本统一