Windows 10 环境下使用 GraalVM JDK 21 + Spring Boot 3.5 构建 Native Image

环境准备

操作系统要求

Windows 10 x64 系统,确保系统更新至最新补丁。

开发工具清单

  • IntelliJ IDEA 2024.x(需支持GraalVM和Spring Boot 3.5)
  • GraalVM JDK 21(Oracle或Liberica版本)
  • Maven 3.8.x及以上版本
  • 必备IDEA插件:Spring Boot Extension Pack、GraalVM Native Image

开发框架

Spring Boot 3.5(确认项目依赖已适配Native Image支持)


GraalVM JDK 21安装步骤

下载与解压

从Oracle或BellSoft官网下载GraalVM JDK 21的Windows版本,解压至非中文路径(如C:\graalvm-jdk-21.0.1+12.1)。

环境变量配置

  1. 新增系统变量:

    复制代码
    JAVA_HOME=C:\graalvm-jdk-21.0.1+12.1
  2. 更新Path变量:

    复制代码
    %JAVA_HOME%\bin

验证与工具安装

执行命令验证安装:

bash 复制代码
java -version

若需手动安装Native Image工具:

bash 复制代码
gu install native-image

Visual Studio 2022配置

组件选择

  1. 安装时仅保留英文语言包(避免构建失败)
  2. 勾选以下核心组件:
    • "使用C++的桌面开发"
    • Windows SDK(最新版本)
    • C++ CMake工具
    • 编译器及运行时库

环境加载

安装完成后重启系统,或手动执行以下命令加载环境变量:

cmd 复制代码
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"

IntelliJ IDEA配置

SDK设置

  1. 进入File > Project Structure > SDKs
  2. 添加GraalVM JDK 21的安装路径
  3. 将项目SDK切换为GraalVM

Native支持启用

pom.xml中添加依赖:

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aot</artifactId>
</dependency>

IDEA的Maven面板中激活native Profile。


Maven插件配置

pom.xml示例

xml 复制代码
<plugin>
    <groupId>org.graalvm.buildtools</groupId>
    <artifactId>native-maven-plugin</artifactId>
    <configuration>
        <imageName>demo1</imageName>
        <mainClass>com.example.DemoApplication</mainClass>
        <buildArgs>
            --no-fallback
        </buildArgs>
    </configuration>
</plugin>

参数说明

  • imageName:输出可执行文件名(Windows下为.exe
  • mainClass:Spring Boot主类全限定名
  • buildArgs--no-fallback禁用JVM回退模式

构建与运行

IDEA构建方式

  1. 打开Maven面板
  2. 执行Plugins > native > native:build

命令行构建

bash 复制代码
mvn clean install -Pnative

生成文件路径:target/demo1.exe


常见问题解决

C编译器缺失

  • 确认Visual Studio 2022的C++组件已安装
  • 检查环境变量是否包含cl.exe路径(如C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\<version>\bin\Hostx64\x64

运行时错误

  • 检查mainClass配置是否正确
  • 确认反射或资源文件已通过AOT处理(需额外配置reflect-config.json

参考资源

相关推荐
武哥聊编程6 小时前
基于Springboot3+Vue3的仓库管理系统,经典项目,免费学习
java·学习·mysql·vue·springboot·课程设计
言一木7 小时前
mybatis-plus分表实现案例
springboot·mybatis-plus·水平分表
fanruitian9 小时前
springboot4 swagger3
java·springboot·swagger3·springboot4
千寻技术帮1 天前
10407_基于springboot的就业信息分享系统
mysql·毕业设计·源码·springboot·安装·文档·就业信息
失足成万古风流人物1 天前
面试官问MyBatis/OpenFeign的原理?我手搓了个MyHttp怼回去!(反八股版)
mybatis·springboot·openfeign·动态代理
华大哥2 天前
linux 安装Kafka 和springboot kaka实战
分布式·kafka·springboot
她说..3 天前
在定义Java接口参数时,遇到整数类型,到底该用int还是Integer?
java·开发语言·java-ee·springboot