在Windows上使用GraalVM构建SpringBoot 3.0原生可执行文件

参考文档

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

https://blog.csdn.net/weixin_40972073/article/details/128350601

注意

GraalVM 需要使用 Visual Studio 来构建可执行文件,而 GraalVM 对于 Visual Studio 的版本有要求。如果版本不匹配,有大坑要踩。

本文使用 graalvm-ce-java17-windows-amd64-22.3.3 和 Visual Studio 2017 作为示例。

其他版本自行测试。

关于vs2017的安装不详细论述,安装参考下面的图即可。

GraalVM 的安装和配置

GraalVM下载地址: https://github.com/graalvm/graalvm-ce-builds/releases

在上面的地址中下载如下两个文件:

1graalvm-ce-java17-windows-amd64-22.3.3.zip
2native-image-installable-svm-java17-windows-amd64-22.3.3.jar

由于本机已经安装了java8(工作用途),所以本人在命令行中运行时,都是设置临时变量,这样不会影响工作。

编写脚本:graalvm-ce-java17-windows-amd64.bat ,内容如下:

1@echo off
2echo **********************************************************************
3echo          graalvm-ce-java17-windows-amd64 Environment Initialized         
4echo **********************************************************************
5set JAVA_HOME=D:\dev\graalvm-ce-java17-windows-amd64
6set GRAALVM_HOME=D:\dev\graalvm-ce-java17-windows-amd64
7set path=%JAVA_HOME%\bin;%path%
8%comspec%

在命令行执行命令时,先运行该脚本,可临时改变java的环境变量。

把 graalvm-ce-java17-windows-amd64-22.3.3.zip 解压到任意目录,并设置环境变量。

设置完环境变量后,安装打包工具(Native Image)

1# 安装:
2gu install -L "D:\downloads\graalvm\graalvm-ce-java17-windows-amd64-22.3.3\native-image-installable-svm-java17-windows-amd64-22.3.3.jar"
3
4# 显示已安装列表:
5gu list

示例

创建应用

使用 https://start.spring.io/ 创建一个Spring Boot 3.0应用:

1、选择Java 17 版本

2、选择GraalVM Native Support、Spring Web

注意:

例如: GraalVM 版本和 spring boot 版本也有要求(此处也坑)。

经过实践,下图所示的版本没有问题。

然后自行创建 controller 等,此处不再表述。

构建应用

打包 Spring Boot 项目

此处需要使用vs的命令行工具,并结合 GraalVM ,才能打包成exe文件。

在“开始”菜单中打开“适用于 VS 2017 的 x64 本机工具命令提示”

然后运行上面的设置GraalVM环境变量的脚本:graalvm-ce-java17-windows-amd64.bat

cd 到上面创建的 Spring Boot 项目,运行:mvn -Pnative native:compile