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

参考资源

相关推荐
还是鼠鼠5 天前
Spring AI ChatClient详解:创建第一个AI客户端
java·springboot·spring ai·chatclient
西凉的悲伤5 天前
Java 基于 MySQL 行锁实现高并发业务序列号生成器
java·mysql·springboot·序列号生成
YDS8296 天前
大营销平台 —— 细节优化和前端对接
java·springboot·ddd
刘名喜7 天前
第22篇-数据库迁移-Liquibase
kotlin·springboot
刘名喜7 天前
第30篇-Spring-Security-7核心概念
后端·kotlin·springboot
刘名喜7 天前
第24篇-全局异常处理
kotlin·springboot
YDS8298 天前
大营销平台 —— 架构解析和抽奖流程串联
java·springboot·ddd
刘名喜8 天前
第21篇-N+1问题与fetch-join-EntityGraph
kotlin·springboot
刘名喜9 天前
第17篇-PostgreSQL-Docker环境搭建
kotlin·springboot
刘名喜10 天前
第09篇-协程基础-Kotlin异步编程
开发语言·kotlin·springboot