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

Spring Native运行原生镜像报Class.isSealed()方法不支持错误

问题根因

该报错由版本兼容性不匹配直接导致:

  • 你当前使用的GraalVM CE 21.3.2版本虽然基于OpenJDK 17,但其原生镜像运行时(Substrate VM)的类替换逻辑未实现java.lang.Class.isSealed()方法
  • Spring Boot 2.7.x版本的AOP代理工具类AopProxyUtils会在创建JDK动态代理时反射调用isSealed()方法判断密封类属性,触发GraalVM的不支持特性错误
  • 你的pom配置中重复声明了两次spring-aot-maven-plugin,其中未绑定执行目标的冗余声明会干扰AOT预处理代码生成,会放大兼容性问题。
解决方案

按以下步骤操作即可修复:

1. 升级本地GraalVM到兼容版本

Spring Native 0.12.x 适配Spring Boot 2.7.x的最低GraalVM版本要求为22.0,推荐使用22.3.3(该分支最后一个稳定兼容版本):

  • 替换本地GraalVM环境为JDK17对应的GraalVM CE 22.3.3版本
  • 安装完成后执行gu install native-image确保原生镜像构建组件已安装,执行java -version确认版本输出包含GraalVM CE 22.3.3标识
  • 如果使用spring-boot:build-image构建容器镜像,无需额外修改builder配置,Paketo构建包会自动拉取匹配版本的GraalVM运行环境。

2. 修正pom.xml配置

首先删除重复的、未配置执行目标的spring-aot-maven-plugin声明,仅保留绑定了generate目标的插件段:

<plugin>
    <groupId>org.springframework.experimental</groupId>
    <artifactId>spring-aot-maven-plugin</artifactId>
    <version>0.12.0</version>
    <executions>
        <execution>
            <id>generate</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>

其次将native构建profile中的native-maven-plugin版本升级到0.9.28,和GraalVM 22.3版本匹配,避免构建阶段的版本校验错误:

<plugin>
    <groupId>org.graalvm.buildtools</groupId>
    <artifactId>native-maven-plugin</artifactId>
    <version>0.9.28</version>
    <executions>
        <execution>
            <id>build-native</id>
            <goals>
                <goal>build</goal>
            </goals>
            <phase>package</phase>
        </execution>
    </executions>
</plugin>

3. 清理缓存后重新构建

先执行清理命令删除旧的构建产物和AOT生成代码:

mvn clean

再执行对应构建命令即可:

  • 本地构建原生可执行文件:mvn package -Pnative
  • 构建原生应用容器镜像:mvn package spring-boot:build-image
额外注意事项
  • 不要在Spring Native 0.12.x版本上使用GraalVM 23.0及以上版本,会出现新的API不兼容问题
  • 如果升级后启动出现第三方类找不到/反射报错,可以在native-maven-plugin中配置GraalVM元数据仓库,自动拉取社区维护的第三方组件反射、资源配置
  • Spring Native相关独立依赖已经在Spring Boot 3.0+版本正式合并为Spring框架内置的AOT引擎,后续升级Spring Boot 3.x时不需要再单独引入spring-native、spring-aot依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:36:22