GraalVm的初体验

691 阅读3分钟

此文章只涉及 Windows版 graalVm

下载与安装

1.1 下载

官网下载的话,下载社区版即可

GraalVm官网

Github地址

百度云下载,内容比较全面

1.2 设置环境变量(根据自己路径来配置)

就和配JDK环境变量一模一样,只是把原来JDK的环境变量改成GraalVM

 JAVA_HOME : D:\developer\graalvm-ce-java8-21.1.0
 ​
 PATH : %JAVA_HOME%\bin

下图表示配置成功

image-20230107234035305

1.3 安装 Visual Studio(关系到后面graalVm的编译)

Microsoft C++ 生成工具 - Visual Studio下载地址

安装如下组件即可,如图:

b2baf59f65cc9c153cd2fe32d6b3d088

1.4 配置 VS 环境变量(非常重要)

以下文件路径只是笔者电脑上的,具体路径按自己电脑路径修改即可。基本上路径是大差不差的

  • Include 变量
 INCLUDE  = C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include;

image-20230108103356003

  • lib 变量
 LIB = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64;

image-20230108103628806

  • path 变量
 path = C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64

image-20230108103813530

1.5 安装 GraalVm 插件

 # CMD 运行命令
 gu install native-image

如果出现 jar 包下载超时,还是请手动下载或者挂代理等。下载下来放到<GraalVm的安装路径>\lib\installer\components文件夹下,就不用cmd下载了

笔者已经把该资源放到文章开头的百度云链接里面了。有需要的可以取

image-20230108104456041

下载完成后,运行命令:

 gu list
 ​
 # 结果如下,说明成功
 ComponentId              Version             Component name                Stability                     Origin
 ---------------------------------------------------------------------------------------------------------------------------------
 graalvm                  22.3.0              GraalVM Core                  Supported
 native-image             22.3.0              Native Image                  Early adopter                 github.com

1.6 测试案例

创建一个普通的 java项目(不是maven)
 /**
  * @author misury
  **/
 public class Main {
     public static void main(String[] args) {
         System.out.println("Hello world!");
     }
 }
 ​
编译该类
 # 生成Class文件
 javac Main.java
找到Class文件的存放路径
 # 运行命令
 native-image Main

1.7 结果

一般运行到下图这样的,就大概不会出现异常了。

image-20230108104946994

编译成功

image-20230108105002034

下图是编译后的产物

image-20230108105016987

CMD下运行的结果,正确!

image-20230108105132834

这时,GraalVm的所有环境搭建工作全部结束了。有一些错误可以参考下方或者浏览器搜索

常见错误

以下问题的解决方式,通常都是环境变量配置的问题,检查环境变量的配置即可!

未配置VS环境变量

  • Default native-compiler executable ‘cl.exe’ not found via environment variable PATH

未配置 INCLUDE 环境变量

  • fatal error C1034: stdio.h: 不包括路径集

未配置LIB环境变量

  • fatal error LNK1104: 无法打开文件“LIBCMT.lib”]

目前未知原因

fatal error C1083: 无法打开包括文件: “excpt.h”: No such file or directory]

image-20230108101625339

  • 解决方法:我个人环境变量已经配好了,但是还是有这个问题。没有分析到什么原因。解决办法倒是有一个,不过不是很聪明
 把这个目录下的错误所指出的文件
 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include
 ​
 复制到
 C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt
 目录下即可

不过出现这种错误,一般不会是因为某一个文件找不到发生错误,通常是一堆文件找不到。我的做法比较粗暴,就是直接把上面提到目录里面所有的.h文件复制到目标目录里面、再运行native-image Main,即可成功

参考文献

Graalvm入门跳坑记录

Download GraalVM

Releases · graalvm/graalvm-ce-builds (github.com)