GraalVM Native Image 技术可提前将 Java 代码编译为自包含的可执行文件。只有应用程序运行时所需的代码才会添加到可执行文件中。
也就是说打包体积会很小,不需要考虑设备有没有java环境,也不需要带着笨重的 jre 了
安装过程有很多的坑,愿你们可以一次成功...
1. 安装 GraalVM
官方下载地址:官网下载 GraalVM 仓库下载 graalvm/graalvm-ce-builds (github.com)
注意官网主页只有Java17和20版本的,教程使用的是Java8的,需要到这里下载:Oracle GraalVM Downloads
【免费】graalvm-ee-java8-windows-amd64-21.3.7.zip资源-CSDN文库
下载完成后解压,修改配置Java的环境变量为解压的文件夹
配置完环境变量后查看Java版本信息是否为GraalVM
java -version
2. 安装 Native Image
版本信息正确后执行命令安装 native-image
gu.cmd install native-image
也可以选择离线安装
下载native-image Oracle GraalVM Downloads
执行安装命令
gu.cmd -L install native-image-installable-svm-svmee-java8-windows-amd64-21.3.7.jar
检查是否安装成功
gu.cmd list
native-image
3. 安装 Visual Studio
需要安装运行环境visual studio和MSVC
下载Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com)
Windows 10 SDK也可以。
注意:VS的安装盘符下会生成 Windows Kits 文件夹,如果找不到可以去注册表里面查看
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0
4. 设置环境变量
①新增 INCLUDE
D:\Windows Kits\10\Include\10.0.22621.0\ucrt
D:\Windows Kits\10\Include\10.0.22621.0\um
D:\Windows Kits\10\Include\10.0.22621.0\shared
D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\include
②新增 LIB
D:\Windows Kits\10\Lib\10.0.22621.0\um\x64
D:\Windows Kits\10\Lib\10.0.22621.0\ucrt\x64
D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\lib\x64
③修改增加 Path
D:\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\Hostx64\x64
至此Windows就已经全部配置完成了
5. 进行exe打包测试
新建一个 HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world");
}
}
编译class
javac HelloWorld.java
在当前路径生成exe
native-image HelloWorld
jar包打包命令
native-image -jar demo.jar demo
异常:
找不到 cl.exe 原因是 path 环境变量配置错误
找不到 某某.h 原因是 INCLUDE 环境变量配置错误
找不到 某某.lib 原因是 LIB 环境变量配置错误
示例:graalvm/graalvm-demos:此存储库包含几个小型应用程序。这些程序说明了GraalVM的功能 (github.com)
6. Linux版
与步骤1、2同理,OS版本选Linux,下载 GraalVM 和 Native Image。
解压
tar -zxvf graalvm-ee-java8-linux-amd64-21.3.7.tar.gz
修改Java环境变量
vi /etc/profile
export JAVA_HOME=/home/hang/graalvm-ee-java8-21.3.7/
export PATH=$PATH:$JAVA_HOME/bin
使生效
source /etc/profile.d/jdk.sh
查看是否生效
echo $JAVA_HOME
java -version
安装 Native Image
在线安装:
gu install native-image
离线安装:
gu -L install native-image-installable-svm-svmee-java8-linux-amd64-21.3.7.jar
查看是否安装成功
gu list
安装必备工具
Linux(cenots)使用 yum install gcc glibc-devel zlib-devel
Ubuntu/使用 apt-get install build-essential libz-dev zlib1g-dev
其他Linux使用 dnf install gcc glibc-devel zlib-devel libstdc++-static
其他更多:https://www.graalvm.org/latest/reference-manual/native-image/#install-native-image
打包命令同上