WIN11上使用GraalVM打包springboot3项目为本地可执行文件exe

耐心肝才能成功

  • 概念
  • 步骤概要
  • 详细步骤
    • [一. GraalVM 17](#一. GraalVM 17)
    • [二. 安装Visual Studio 2022](#二. 安装Visual Studio 2022)
    • [三. 创建springboot](#三. 创建springboot)
    • [四. IDEA最新版或者eclipse2025调试项目](#四. IDEA最新版或者eclipse2025调试项目)
    • [五. 打包exe](#五. 打包exe)

概念

springboot3生成的jar编译成windows本地C++文件,不再依赖JVM运行

WINDOW编译较为复杂,限制条件很多,需要耐心

步骤概要

一. 下载配置GraalVM 17(最好版本一致)

二. 安装Visual Studio 2022 C++桌面开发(必须2022以上)

三. springboot官网生成项目

四. IDEA最新版或者eclipse2025调试项目

五. 打包exe(使用x64 Native Tools Command Prompt for VS 2022)

总结了deepseek(采纳意见:使用x64 Native Tools Command Prompt for VS 2022打包),豆包(采纳意见:springboot官网生成项目),通义千问(采纳意见:下载配置GraalVM 17)等AI后步骤

详细步骤

一. GraalVM 17

1. 下载

链接: GraalVM 官方下载页面

选择适合 Windows 11 的 GraalVM 版本(建议选择最新的稳定版本),并下载包含 Java 17 或更高版本的社区版(CE)。

2. 安装

解压下载的压缩包到一个合适的目录,例如 C:\Program Files\GraalVM。
3. 配置环境变量

打开 "系统属性" -> "高级系统设置" -> "环境变量"。

在 "系统变量" 中,找到 Path 变量,编辑它并添加 GraalVM 的 bin 目录,例如 C:\Program Files\GraalVM\bin。

新增 JAVA_HOME 系统变量,值为 GraalVM 的安装目录,例如 C:\Program Files\GraalVM。
4. 验证安装

打开命令提示符或 PowerShell,运行以下命令:

shell 复制代码
java -version
## 正常会出现GraalVM
  1. 安装本地编译插件GraalVM Native Image
shell 复制代码
## 安装
gu install native-image
## 验证
gu list

如果无法远程安装,AI其他方式下载安装

二. 安装Visual Studio 2022

  1. 官网下载(社区版是免费的,安装社区版就可以了,下载2022版本,2019版本经测试打包失败)
  2. 选择C++桌面开发(主要是要用他的一个工具x64 Native Tools Command Prompt for VS 2022)
  3. 验证
    本地程序搜索x64 Native Tools Command Prompt for VS 2022

三. 创建springboot

官网创建
spring官网创建项目,IDEA创建也可以

四. IDEA最新版或者eclipse2025调试项目

  • IDEA需要最新版,如果没有,下载最新版eclipse也行

  • 这里使用eclipse-2025-03导入项目,选择导入已存在maven项目

  • maven自行配置,要求maven-3.6.3+

  • 导入后在主类运行测试

  • 项目根目录运行maven打包,maven打包成jar测试

shell 复制代码
## 清理下无用缓存
mvn clean
## 编译
mvn compile
## 打包成jar
mvn package
## 运行下Jar测试
java -jar demo.jar

五. 打包exe

  • 打开x64 Native Tools Command Prompt for VS 2022(普通cmd会打包失败,因为命令行有字符长度限制)
shell 复制代码
## 根目录运行命令打包成exe,成功后在target目录出现demo.exe
mvn -Pnative native:compile

以下其他可选打包方式:

  • 打包成镜像(需要本地安装了docker,会打包成docker镜像)
    mvn -Pnative spring-boot:build-image
    项目过大时,加大maven内存
    mvn -Pnative native:compile -Dnative.xmx=8g

编程成功!

启动速度大幅增加

常见错误:

可能的原因:

  1. 使用了普通cmd编辑
  2. 使用了x86 Native Tools Command Prompt for VS 2022,这个编译32位的,测试编译不通过
  3. 未安装x64 Native Tools Command Prompt for VS 2022,或者权限不足
  4. 反射为标明注解(本地EXE无法使用反射,需要标注,编译时会检查反射和JNI)
  5. 资源文件未指定(资源文件无法打包,需要指定成外部读取)

参考

https://blog.csdn.net/qq_27935091/article/details/129981470

https://blog.csdn.net/cnzzs/article/details/145273234

相关推荐
tekin25 分钟前
Go、Java、Python、C/C++、PHP、Rust 语言全方位对比分析
java·c++·golang·编程语言对比·python 语言·php 语言·编程适用场景
李长渊哦1 小时前
Java 虚拟机(JVM)方法区详解
java·开发语言·jvm
陌殇殇3 小时前
002 SpringCloudAlibaba整合 - Feign远程调用、Loadbalancer负载均衡
java·spring cloud·微服务
猎人everest3 小时前
SpringBoot应用开发入门
java·spring boot·后端
山猪打不过家猪5 小时前
ASP.NET Core Clean Architecture
java·数据库·asp.net
AllowM5 小时前
【LeetCode Hot100】除自身以外数组的乘积|左右乘积列表,Java实现!图解+代码,小白也能秒懂!
java·算法·leetcode
不会Hello World的小苗6 小时前
Java——列表(List)
java·python·list
二十七剑7 小时前
jvm中各个参数的理解
java·jvm
东阳马生架构8 小时前
JUC并发—9.并发安全集合四
java·juc并发·并发安全的集合
计算机小白一个9 小时前
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
java·数据结构·算法·蓝桥杯