Spring Cloud版本冲突(java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper)

Spring Cloud版本冲突(java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper)springboot整合springcloud和springcloudalibaba版本导致的问题问题描述问题描述修改springboot版本后,启动springboot项目项目报错:java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapperjava.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper atjava.lang.ClassL

大家好,又见面了,我是你们的朋友全栈君。

spring boot整合spring cloud和spring cloud alibaba 版本冲突导致的问题: java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper

问题描述

修改springboot版本后,启动springboot项目项目报错:
java.lang.NoClassDefFoundError:org/springframework/boot/Bootstrapper

java.lang.NoClassDefFoundError: org/springframework/boot/Bootstrapper
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
	at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at org.springframework.cloud.bootstrap.encrypt.DecryptEnvironmentPostProcessor.getTextEncryptor(DecryptEnvironmentPostProcessor.java:83)
	at org.springframework.cloud.bootstrap.encrypt.DecryptEnvironmentPostProcessor.postProcessEnvironment(DecryptEnvironmentPostProcessor.java:69)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEnvironmentPreparedEvent(ConfigFileApplicationListener.java:177)
	at org.springframework.boot.context.config.ConfigFileApplicationListener.onApplicationEvent(ConfigFileApplicationListener.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
	at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:76)
	at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
	at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:342)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
	at com.atguigu.gulimail.product.GuliMailProductApplication.main(GuliMailProductApplication.java:11)
Caused by: java.lang.ClassNotFoundException: org.springframework.boot.Bootstrapper
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 27 common frames omitted

原因

版本冲突

本人是使用idea的spring Initializr初始化器去创建的项目,随后将springboot的版本改为了较旧的 springboot 2.3.2 版本,启动后报错,把版本更改回原版本问题解决。
原来是因为使用spring Initializr创建的时候,一旦你勾中了springCloud有关技术,他会同时引入springCloud依赖版本管理:

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2020.0.0</spring-cloud.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${ 
   spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

而spring boot整合springcloud及spirngcloud alibaba对版本的匹配要求是很高的,具体见下图springcloud alibaba官网中的版本说明截取
springcloud alibaba版本说明
版本控制描述

解决办法

统一控制spring boot,spring cloud,spring cloud alibaba的版本,具体版本匹配如上图
本人采用的

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.2.3.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR8</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

结论

使用spring Initializr初始化器去创建的项目时(用到cloud或者cloud alibaba),若想变动为其他版本时,必须同时控制三者版本,否则很容易出现上述问题。

推荐

推荐在父工程中统一管理三者版本,子模块通过快速初始化后删除其中pom中的三者版本的统一管理,如下图,删除掉

    <properties>
        <java.version>1.8</java.version>
        <spring-cloud.version>2020.0.0</spring-cloud.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${ 
   spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162191.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux中chmod用法[通俗易懂]

    Linux中chmod用法[通俗易懂]Linux中chmod用法

    2022年10月20日
    3
  • bool型函数定义及应用

    bool型函数定义及应用 bool型函数定义及应用已编译通过#include &lt;stdio.h&gt; int*p,a[10];//sizeofp;unsignedintc=-20;intd=10;typedefenum{   true=1,false=0}bool;  //布尔类型,使用前必须自定义enumweekday      //枚举类型 {sun=…

    2022年5月20日
    51
  • CSS3-transition「建议收藏」

    CSS3-transition「建议收藏」1、transition代表css3中的过渡,可以使元素从一种样式逐渐改变为另一种的效果。2、transition:height2s;表示需要渐变的是元素高度height,渐变时间是2s。tra

    2022年7月4日
    19
  • goland2022.01.4激活【最新永久激活】2022.01.17

    (goland2022.01.4激活)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html0HKLM1UCCY-eyJsaWN…

    2022年3月31日
    187
  • jax java,用JAX WS实现java调用webServic「建议收藏」

    jax java,用JAX WS实现java调用webServic「建议收藏」来个简单点的:1.建个具体的服务实现:packagecom.webservice;@WebServicepublicclassWarehouse{privateMapprices;publicWarehouse(){prices=newHashMap();prices.put(“BlackwellToaster”,24.95);prices.put(“ZapXpress…

    2022年7月15日
    11
  • OpenCV里IplImage的widthStep参数

    OpenCV里IplImage的widthStep参数昨儿在Moto写程序时遇到的问题.当时是要切人脸图片,比较谨慎,做完了想看一下切的效果就写了个程序显示出来,结果很令人诧异,就试了六幅图结果有五幅完全不对头,都产生了错位,每行错开一点,最后看不出来是人脸了…这下烦了,要是自己写的那个切割工具出问题的话,那眼花缭乱的切了两个多小时的工作都白费了,没办法,找原因吧.又仔细的切了几幅,还是不行,奇怪的是有个别图像显示是正确的.其实工作很简单,就是从一幅

    2022年5月28日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号