耐心肝才能成功
- 概念
- 步骤概要
- 详细步骤
- 一. GraalVM 17
- 二. 安装Visual Studio 2022
- 三. 创建springboot
- 四. IDEA最新版或者eclipse2025调试项目
- 五. 打包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,运行以下命令:
java -version
## 正常会出现GraalVM
- 安装本地编译插件
GraalVM Native Image
## 安装
gu install native-image
## 验证
gu list
如果无法远程安装,AI其他方式下载安装
二. 安装Visual Studio 2022
- 官网下载(社区版是免费的,安装社区版就可以了,下载2022版本,2019版本经测试打包失败)
- 选择C++桌面开发(主要是要用他的一个工具x64 Native Tools Command Prompt for VS 2022)
- 验证
本地程序搜索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测试
## 清理下无用缓存
mvn clean
## 编译
mvn compile
## 打包成jar
mvn package
## 运行下Jar测试
java -jar demo.jar
五. 打包exe
- 打开
x64 Native Tools Command Prompt for VS 2022
(普通cmd会打包失败,因为命令行有字符长度限制)
## 根目录运行命令打包成exe,成功后在target目录出现demo.exe
mvn -Pnative native:compile
以下其他可选打包方式:
- 打包成镜像(需要本地安装了docker,会打包成docker镜像)
mvn -Pnative spring-boot:build-image
项目过大时,加大maven内存
mvn -Pnative native:compile -Dnative.xmx=8g
编程成功!
启动速度大幅增加
常见错误:
可能的原因:
- 使用了普通cmd编辑
- 使用了x86 Native Tools Command Prompt for VS 2022,这个编译32位的,测试编译不通过
- 未安装x64 Native Tools Command Prompt for VS 2022,或者权限不足
- 反射为标明注解(本地EXE无法使用反射,需要标注,编译时会检查反射和JNI)
- 资源文件未指定(资源文件无法打包,需要指定成外部读取)
参考
https://blog.csdn.net/qq_27935091/article/details/129981470
https://blog.csdn.net/cnzzs/article/details/145273234