项目所用的springboot版本从1.5.x升级到2.2.x,
项目启动报java.lang.NoClassDefFoundError: org/springframework/util/unit/DataSize
spring版本和springboot及springcloud的适用版本对不上
找到自己定义过的spring版本,修改为5.2.x即可
PS: 想知道springboot及springcloud版本对应关系在这里:
https://spring.io/projects/spring-cloud
springboot和spring的依赖关系在这里:
https://spring.io/projects/spring-boot#learn
点开后点击
Dependency Versions,在里面就可以找到与spring(还有其他所有的依赖)对应的依赖关系了
我们在idae的External libraries下搜索版本号,比如4.3.x,能看到该版本的spring被项目使用中,但在现有所有的包括子服务的pom中,根本找不到该版本spring的定义,此时4.3.x版本的spring-context包中是没有这个org.springframework.util.unit.DataSize类的,这种问题令人头疼
问题原因:
某个已引入的jar包引入了这个版本的spring依赖,导致在项目中使用了该版本
思考:
既然一时半会也找不到该依赖的引入,也无法间接更改版本,那就直接控制其版本
利用
我项目的主pom文件部分properties:
<properties>
<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring.version>5.2.5.RELEASE</spring.version>
<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
</properties>
定义
<dependencyManagement>
<dependencies>
<!-- 锁定spring版本 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 锁定spring版本 -->
</dependencies>
</dependencyManagement>
有一个更好用的插件,快速定位依赖与冲突,大家也可以用起来:mavenhelper
引用:
用法:
https://www.cnblogs.com/jajian/p/11002521.html
下载地址:
https://plugins.jetbrains.com/plugin/7179-maven-helper
希望碰到类似问题的伙伴,在此做一个参考~~~有问题可留言