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

如何使用刚发布的JDK22构建SpringBoot 3.2.3应用?

使用JDK22构建Spring Boot 3.2.3项目失败的解决办法

问题背景

尝试用JDK22构建Spring Boot 3.2.3项目时,执行mvn clean install报错失败,核心错误信息为:

Unsupported class file major version 66

该错误由spring-boot-maven-plugin:3.2.3的repackage目标抛出,根源是Spring Boot 3.2.3依赖的ASM版本不支持JDK22对应的类文件版本(版本号66)。

解决方案

方案1:升级Spring Boot到支持JDK22的版本

Spring Boot从3.2.4版本开始正式支持JDK22,直接修改pom.xml中的父项目版本即可:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.4</version> <!-- 或更高兼容版本 -->
    <relativePath/>
</parent>

<properties>
    <java.version>22</java.version> <!-- 同步将Java版本改为22 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

修改后重新执行mvn clean install即可正常构建。

方案2:不升级Spring Boot,调整编译配置

若暂时不想升级Spring Boot,可保持3.2.3版本,但配置Maven用JDK22编译,同时将目标字节码版本设为Spring Boot 3.2.x支持的JDK21,需显式配置maven-compiler-plugin:

<properties>
    <java.version>21</java.version>
    <maven.compiler.source>22</maven.compiler.source>
    <maven.compiler.target>21</maven.compiler.target>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.12.1</version> <!-- 使用支持JDK22的编译器版本 -->
            <configuration>
                <source>22</source>
                <target>21</target>
                <release>21</release> <!-- 确保生成兼容JDK21的字节码 -->
            </configuration>
        </plugin>
        <!-- 保留原有插件配置 -->
        <plugin>
            <groupId>org.graalvm.buildtools</groupId>
            <artifactId>native-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

此方式下,项目用JDK22编译,但生成的字节码兼容JDK21,Spring Boot插件可正常处理。

方案3:手动升级ASM依赖(不推荐)

可在pom.xml中强制升级ASM到支持JDK22的版本(如9.6+),但可能引发Spring Boot内部组件兼容性问题,仅作临时应急方案:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm</artifactId>
            <version>9.6</version>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-commons</artifactId>
            <version>9.6</version>
        </dependency>
        <dependency>
            <groupId>org.ow2.asm</groupId>
            <artifactId>asm-tree</artifactId>
            <version>9.6</version>
        </dependency>
    </dependencies>
</dependencyManagement>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 15:10:55