You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Spring Boot 2.5至2.6时遇java.lang.NoClassDefFoundError问题求助

问题:Spring Boot 2.5升级到2.6后启动失败,抛出NoClassDefFoundError: org/springframework/boot/Bootstrapper

问题背景

将Spring Boot从2.5版本升级到2.6版本后,应用启动失败,出现NoClassDefFoundError,提示找不到org.springframework.boot.Bootstrapper类。

项目指定版本的依赖

项目中部分手动指定版本的依赖如下(其余依赖继承自父项目):

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.31</version>
</dependency>
<dependencies>
    <dependency>
        <groupId>io.awspring.cloud</groupId>
        <artifactId>spring-cloud-aws-dependencies</artifactId>
        <version>2.3.0</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-bom</artifactId>
        <version>1.12.89</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>2.16.67</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
</dependencies>

错误日志

20:27:56.606 [main] ERROR org.springframework.boot.SpringApplication - Application run failed
java.lang.NoClassDefFoundError: org/springframework/boot/Bootstrapper
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)

解决方案

核心原因

该错误源于Spring Boot与Spring Cloud AWS版本不兼容:Spring Cloud AWS 2.3.0是适配Spring Boot 2.4/2.5的版本,无法兼容Spring Boot 2.6;同时手动指定的依赖版本也可能与Boot内置依赖冲突。

具体修复步骤

  1. 升级Spring Cloud AWS依赖版本
    Spring Boot 2.6对应的Spring Cloud AWS版本为3.x系列,修改spring-cloud-aws-dependencies的导入版本:

    <dependency>
        <groupId>io.awspring.cloud</groupId>
        <artifactId>spring-cloud-aws-dependencies</artifactId>
        <version>3.0.0</version> <!-- 适配Spring Boot 2.6的最低版本,可按需升级到更高兼容版本 -->
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    
  2. 同步升级AWS SDK版本
    Spring Cloud AWS 3.x适配AWS SDK 2.x的新版本,建议将software.amazon.awssdk的BOM版本升级到兼容的2.17.x系列,例如:

    <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>2.17.100</version>
        <type>pom</type>
        <scope>import</scope>
    </dependency>
    
  3. 移除手动指定的snakeyaml版本
    Spring Boot 2.6已经内置了适配的snakeyaml版本,手动指定1.31会导致版本冲突,直接删除该依赖的版本声明即可:

    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <!-- 移除version标签,由Spring Boot父项目管理版本 -->
    </dependency>
    
  4. 清理并更新依赖
    执行Maven命令强制清理并更新依赖,确保所有依赖版本一致:

    mvn clean install -U
    

内容的提问来源于stack exchange,提问作者Sarfraz z

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:35:33