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

相关推荐
稚辉君.MCA_P8_Java12 分钟前
豆包 Java的23种设计模式
java·linux·jvm·设计模式·kubernetes
tanyongxi6612 分钟前
C++ 特殊类设计与单例模式解析
java·开发语言·数据结构·c++·算法·单例模式
遗憾皆是温柔15 分钟前
24. 什么是不可变对象,好处是什么
java·开发语言·面试·学习方法
midsummer_woo20 分钟前
基于springboot的IT技术交流和分享平台的设计与实现(源码+论文)
java·spring boot·后端
Peter(阿斯拉)31 分钟前
[Java性能优化]_[时间优化]_[字符串拼接的多种方法性能分析]
java·性能优化·stringbuilder·string·字符串拼接·stringbuffer·时间优化
水痕012 小时前
gin结合minio来做文件存储
java·eureka·gin
寒士obj2 小时前
Spring事物
java·spring
柯南二号3 小时前
【Java后端】Spring Boot 集成 MyBatis-Plus 全攻略
java·spring boot·mybatis
桦说编程10 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen10 小时前
Java Stream sort算子实现:SortedOps
java·开发语言