前言
GraalVM是一个高性能、云原生、支持多种语言的虚拟机。
GraalVM环境搭建分为两步:
1、下载配置GraalVM和下载native-image。
2,下载配置windows sdk和msvc。
GraalVM
下载配置GraalVM
- 进入到 GitHub 上的 GraalVM 发布存储库。选择适用于 Windows 的基于 Java 11、17 或 19 的发行版,然后下载。我选择的是java17-22.3.0的。
- 将目录更改为要安装 GraalVM 的位置,然后将
.zip存档文件移动到该目录。我这里是放在D:\JDK - 将存档解压缩到文件系统。例如
D:\JDK
配置环境变量
1 2
| GRAALVM_HOME=D:\JDK\graalvm-ce-java17-22.3.0 JAVA_HOME=D:\JDK\graalvm-ce-java17-22.3.0
|
验证
1 2 3 4
| D:\testNative>java -version openjdk version "17.0.5" 2022-10-18 OpenJDK Runtime Environment GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08) OpenJDK 64-Bit Server VM GraalVM CE 22.3.0 (build 17.0.5+8-jvmci-22.3-b08, mixed mode, sharing)
|
安装native-image
官网教程:gu install native-image。但这在windows可能会无法识别gu命令。
在GitHub的一些issue上有相关解决方案:使用全路径gu.cmd
1 2 3 4 5 6
| C:\Windows\System32>gu.cmd install native-image
Downloading: Component catalog from www.graalvm.org Processing Component: Native Image Downloading: Component native-image: Native Image from github.com Installing new component: Native Image (org.graalvm.native-image, version 22.3.0)
|
下载配置sdk和msvc
进入visual studio(社区版)下载页:传送门,下载后安装
注意版本更新
- 如果当前vs是2022的,那么msvc也选择2022的。如果vs是其他版本那msvc也一并选择对应的
- windows sdk也选择和系统对应的(10/11)
- msvc有多个版本,我这里直接选择latest的
如果选错了,再进入安装器,点击修改,重新下载安装单个组件即可。

配置环境变量
1 2
| D:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx64\x64
|
接下来是最容易错的一步,windows sdk各个版本安装目录不同,最稳妥的方法是进入注册表查看,到底安装在哪里,搜索注册表进入注册表编辑器。
注册表路径:计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0

1 2 3 4 5 6
|
INCLUDE=C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\10\Include\10.0.22621.0\shared;D:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include; LIB=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64;D:\Software\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\lib\x64;
|
最终验证
新建一个 HelloWorld.java
1 2 3 4 5
| public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
|
编译为字节码,然后构建本机可执行文件
1 2
| javac HelloWorld.java native-image HelloWorld
|
执行
native-image命令将会在当前工作目录中生成可执行文件
1 2 3
| helloworld.exe
Hello, World!
|
springboot验证
测试代码地址:https://github.com/behappy-project/behappy-redirect
执行命令进行编译:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
...... Produced artifacts: D:\Project\behappy-project\behappy-redirect\target\behappy-redirect.build_artifacts.txt (txt) D:\Project\behappy-project\behappy-redirect\target\behappy-redirect.exe (executable) ======================================================================================================================== Finished generating 'behappy-redirect' in 1m 31s. [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 03:16 min [INFO] Finished at: 2023-08-21T17:10:23+08:00 [INFO] ------------------------------------------------------------------------
|