springboot1.5.x升级2.2.x问题,java.lang.NoClassDefFoundError: org/springframework/util/unit/DataSize

问题:

项目所用的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
springboot1.5.x升级2.2.x问题,java.lang.NoClassDefFoundError: org/springframework/util/unit/DataSize_第1张图片

springboot和spring的依赖关系在这里:
https://spring.io/projects/spring-boot#learn

springboot1.5.x升级2.2.x问题,java.lang.NoClassDefFoundError: org/springframework/util/unit/DataSize_第2张图片

点开后点击
Dependency Versions,在里面就可以找到与spring(还有其他所有的依赖)对应的依赖关系了

springboot1.5.x升级2.2.x问题,java.lang.NoClassDefFoundError: org/springframework/util/unit/DataSize_第3张图片

拓展难题:

我们在idae的External libraries下搜索版本号,比如4.3.x,能看到该版本的spring被项目使用中,但在现有所有的包括子服务的pom中,根本找不到该版本spring的定义,此时4.3.x版本的spring-context包中是没有这个org.springframework.util.unit.DataSize类的,这种问题令人头疼

问题原因:
某个已引入的jar包引入了这个版本的spring依赖,导致在项目中使用了该版本

思考:
既然一时半会也找不到该依赖的引入,也无法间接更改版本,那就直接控制其版本

我的解决方式:

利用标签,此标签可以让我们做所有jar包的版本强制控制,比如我此处使用5.2.5.RELEASE版本
我项目的主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



希望碰到类似问题的伙伴,在此做一个参考~~~有问题可留言

你可能感兴趣的:(springboot)