小工具知识网

当前位置: 首页 > 行业知识 > SpringBoot3 + GraalVm原生镜像 从环境安装到打包测试(超详细)

行业知识

SpringBoot3 + GraalVm原生镜像 从环境安装到打包测试(超详细)

2026-11-12 20:32:43 来源:互联网转载

前言:

更快速、更智能、更精简。

GraalVM 是一个高性能 JDK,可提高基于 Java 和 JVM 的应用的性能并简化 Java 云原生服务的构建和运行。它提供优化的编译器,可以更快地生成代码并降低计算资源消耗,实现微服务即时启动。GraalVM 是 Java SE Universal Subscription 的一部分,无需额外付费;

官网:GraalVM | Oracle 中国

一、安装GraalVm

1、下载地址:

Release GraalVM for JDK 17 Community 17.0.9 · graalvm/graalvm-ce-builds · GitHub

2、下载后解压:

3、配置环境变量:

 1)新增JAVA17_GRAALVM_HOME: GraalVm 解压的路径

 2)更改JAVA_HOME的配置:%JAVA17_GRAALVM_HOME%

 3)  path的配置:%JAVA_HOME%\bin

4、 验证是否配置成功,执行操作java -vesion、 native-image --version、 gu list 如下图即graalvm 环境配置成功:  注意GraalVM for JDK 17 Community 17.0.9 版本这里没有安装native-image,应该是默认安装了,正常还需要安装native-image,见第5步的操作;

5、安装native-image 

1)在线安装:执行gu install native-image 命令安装即可, 由于网络原因,不具体执行展示了

2)离线安装:

1、以 GraalVM for JDK 17 Community 17.0.8 对应的23.0.1 版本为例, 地址:

Release GraalVM Community Components 23.0.1 · graalvm/graalvm-ce-builds · GitHub

找到 native-image-installable-svm-java17-windows-amd64-23.0.1.jar 下载

2、打开cmd,  进入 native-image-installable-svm-java17-windows-amd64-23.0.1.jar 下载的文件夹

执行:gu install -L  native-image-installable-svm-java17-windows-amd64-23.0.1.jar 安装即可

成功后,验证graalvm 环境配置是否成功见第4步

注意: 如graalvm 和native-image 版本不一致,会出现如下图的错误,找到对应的版本,重新安装即可;

二、安装visual Studio

注意: 下载安装vs, 因为在Windows上 使用native-image 打包需要c++环境,而VisualStudio 可以提供c++开发环境,所以我们要先下载安装好VisualStudio

1、下载

在线下载地址:Thank You for Downloading Visual Studio Community Editionhttps://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community&channel=Release&version=VS2022&source=VSLandingPage&cid=2030&passive=false

离线安装方法: 参考

创建脱机安装 - Visual Studio (Windows) | Microsoft Learn

2、 安装:我的 c 盘空间不够,所以改到了d 盘,建议安装在c盘;

选择c++的桌面开发、通用windows的平台开发, 右侧的可选项注意选择了windows 11 sdk(10.0.22621.0)

3、配置环境变量

VISUAL_STUDIO环境变量:visual studio 的安装路径
我的安装路径是:D:\Program Files\Microsoft Visual Studio22\Community\VC\Tools\MSVC.39.33519
Path环境变量:%VISUAL_STUDIO%\bin\Hostx64\x64
INCLUDE环境变量: 注意这里的10.0.22621.0 就是安装是你所选择的Windows sdk 的版本

%VISUAL_STUDIO%\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared;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\Include\10.0.22621.0\winrt;

lib环境变量:

%VISUAL_STUDIO%\lib\x64;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;

三、SpringBoot3 使用idea 打包测试

1、创建项目

2、引包

          17        17        UTF-8                org.springframework.boot        spring-boot-starter-parent        3.0.5                            org.springframework.boot            spring-boot-starter-web                            org.springframework.boot            spring-boot-starter-tomcat                            org.springframework.boot            spring-boot-starter-test            test                                                    org.springframework.boot                spring-boot-maven-plugin                                        org.apache.maven.plugins                maven-surefire-plugin                                    true                                                        org.graalvm.buildtools                native-maven-plugin                0.9.28                true                                                            build-native                                                    compile-no-fork                                                package                                                                test-native                                                    test                                                test                                                                                            graal-vm-demo                                        com.zc.Application                                            --verbose                                        true                    true                                        

2、启动类

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

3、 controller

import org.springframework.web.bind.annotation.GetMappingimport org.springframework.web.bind.annotation.RequestMappingimport org.springframework.web.bind.annotation.RestController@RestController@RequestMapping("hello")public class HelloController {    @GetMapping("world")    public String hello(){        return "hello world";    }}

4、手动打包

5、命令打包: 

mvn cleanmvn compilemvn spring-boot:process-aotmvn -Pnative native:complie

7、打包成功

8、测试: 进入项目的target目录下,双击

四、graalvm 打包问题处理

1)出现'gu.cmd' tool wasn't found. This probably means that JDK at isn't a GraalVM distribution

是因为环境变量配置有问题,检查一下环境变量是否配置成功

2)出现的原因是springboot 和graalvm 版本不一致(springboot3.0 最低支持graalvm 22.3)升级graalvm 版本可解决

3)出现Execution of D:\GraalVM\graalvm-community-openjdk-17.0.8+7.1\bin\native-image.cmd @target\tmp\native-image-12800759822504058774.args returned non-zero result是因为没安装vs没有c++的环境,或者vs的环境配置不对造成的,检查一下重新安装vs,正确配置vs环境即可

4)出现下图这个问题可能是因为 org.graalvm.buildtools 插件版本低,我这里指定高版本解决了

org.graalvm.buildtoolsnative-maven-plugin0.9.28true

上一篇:揭秘电子邮箱背后的秘密,为何首选163邮箱?

下一篇:哪里淘服务器?