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

参考资源

相关推荐
jasnet_u2 天前
SpringBoot服务优雅停机
nacos·springboot·优雅停机
YDS8294 天前
DeepSeek RAG&MCP + Agent智能体项目 —— 环境搭建和项目初始化
java·springboot·agent·rag·deepseek
jasnet_u5 天前
SpringMVC 请求处理深度解析:从 DispatcherServlet 到视图渲染
spring·springmvc·springboot
格鸰爱童话5 天前
springboot3.2使用neo4j
springboot·neo4j
不是光头 强6 天前
Spring Boot 多线程场景下 i18n 国际化失效问题排查与解决
java·开发语言·springboot
极光代码工作室7 天前
基于SpringBoot的宿舍管理系统
java·springboot·web开发·后端开发
unique_williams8 天前
开源 | 我用 HarmonyOS + Spring Boot 写了一个全栈背单词 App,已上架 GitHub
springboot·鸿蒙
下次再写10 天前
深入浅出微服务架构:从理论到Spring Boot实战
java·微服务·springboot·springcloud·架构设计·后端开发·分布式系统
牛奶咖啡1310 天前
CI/CD——在jenkins中构建流程实现springboot项目的自动化构建与部署
java·ci/cd·k8s·jenkins·springboot·springboot制作镜像·使用源码项目制作镜像
凤山老林10 天前
慢SQL治理:索引优化实战指南——从定位到优化的完整解决方案
java·sql·springboot·慢sql治理·sql 性能优化