耐心肝才能成功
- 概念
- 步驟概要
- 詳細步驟
- 一. 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