springboot3 使用 Graalvm打包native-image可执行文件
admin
2024-05-02 08:26:03
0

Graalvm

https://www.graalvm.org/java/quickstart/

https://www.graalvm.org/downloads/

https://github.com/graalvm/graalvm-ce-builds/releases

mac 系统

下载 Graalvm

https://github.com/graalvm/graalvm-ce-builds/releases

电脑系统是 macOS (amd64),java 17 ,选定版本下载

https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.0/graalvm-ce-java17-darwin-amd64-22.3.0.tar.gz

解压缩到 /Users/fox/lang 目录下,最后的路径是

/Users/fox/lang/graalvm-ce-java17--22.3.0

配置环境变量

每个版本的 终端配置可能不一样。我的是 .zshrc 文件

vim ~/.zshrc

最后加入

export PATH=/Users/fox/lang/graalvm-ce-java17--22.3.0/Contents/Home/bin:$PATH
export JAVA_HOME=/Users/fox/devlops/graalvm-ce-java17-22.3.0/Contents/Home

应用并生效

source ~/.zshrc

查看 是否生效

echo $JAVA_HOME

输出/Users/fox/devlops/graalvm-ce-java17-22.3.0/Contents/Home表示生效

安装打包工具 native-image

如果mac必备工具没有安装,先执行安装命令 xcode-select --install,安装必备工具
注意: 这个可能安装非常慢,访问的是国外的文件,有条件的可以利用梯子

未使用梯子时,安装

gu install native-image

使用梯子时安装

先设置梯子,如果你使用的全局,那么可以不用此命令
注意梯子的 端口号,是你梯子的端口号

export https_proxy=https://127.0.0.1:4780
export http_proxy=http://127.0.0.1:4780

最后执行

gu install native-image

native-image 离线安装

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

下载native-image-installable-svm 开头的,根据你的java 选择版本和系统版本
我这边选择

native-image-installable-svm-java17-darwin-amd64-22.3.0.jar

最后安装

gu -L install native-image-installable-svm-java17-darwin-amd64-22.3.0.jar

查看已安装

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

编译和打包

一键 编译和打包

./gradlew nativeCompile

可以分步骤

编译

./gradlew build

假设遍以后的jar文件名称是demo001-0.0.1-SNAPSHOT.jar

打包,打包格式 native-image -jar jar包路径 编译后文件名称

native-image -jar /root/demo001/build/libs/demo001-0.0.1-SNAPSHOT.jar demo001
或者
native-image -jar demo001-0.0.1-SNAPSHOT.jar demo001或
native-image --verbose demo001-0.0.1-SNAPSHOT.jar demo001

demo001: 编译后文件名称

linux 系统

下载 Graalvm

https://github.com/graalvm/graalvm-ce-builds/releases

电脑系统是 linux (amd64),java 17 ,选定版本下载

https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.3.0/graalvm-ce-java17-linux-amd64-22.3.0.tar.gz

解压缩到 /Users/fox/lang 目录下,最后的路径是

/Users/fox/lang/graalvm-ce-java17--22.3.0

配置环境变量

最新版linux系统 都支持 此目录下文件

编辑文件

vim /etc/profile.d/jdk.sh

最后加入

export JAVA_HOME=/opt/graalvm-ce-java17-22.3.0
#export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

应用并生效

source /etc/profile.d/jdk.sh

查看 是否生效

echo $JAVA_HOME

输出/opt/graalvm-ce-java17-22.3.0表示生效

安装打包工具 native-image

安装必备工具
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

注意: 这个可能安装非常慢,访问的是国外的文件,有条件的可以利用梯子

未使用梯子时,安装

gu install native-image

使用梯子时安装

先设置梯子,如果你使用的全局,那么可以不用此命令
注意梯子的 端口号,是你梯子的端口号

export https_proxy=https://127.0.0.1:4780
export http_proxy=http://127.0.0.1:4780

最后执行

gu install native-image

native-image 离线安装

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

下载native-image-installable-svm 开头的,根据你的java 选择版本和系统版本
我这边选择

native-image-installable-svm-java17-linux-amd64-22.3.0.jar

最后安装

gu -L install native-image-installable-svm-java17-linux-amd64-22.3.0.jar

查看已安装

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

编译和打包

一键 编译和打包

./gradlew nativeCompile

可以分步骤

编译

./gradlew build

假设遍以后的jar文件名称是demo001-0.0.1-SNAPSHOT.jar

打包,打包格式 native-image -jar jar包路径 编译后文件名称

native-image -jar /root/demo001/build/libs/demo001-0.0.1-SNAPSHOT.jar demo001
或者
native-image -jar demo001-0.0.1-SNAPSHOT.jar demo001或
native-image --verbose demo001-0.0.1-SNAPSHOT.jar demo001

demo001: 编译后文件名称

相关内容

热门资讯

“我要打10个”的伊朗,缺油了... 如果说两周前,伊朗军方还在电视台上拍着胸脯保证“一切正常,我们赢麻了”,那么现在,这层窗户纸算是被彻...
REDMI K90 Max发布... 4 月 21 日,REDMI K90 Max 正式发布。作为 REDMI K 系列全新成员,REDM...
A股,突变!七大巨头,集体异动... 市场明显起了变化!早上,紫金矿业和宁德时代两大巨头都在发布利好之后意外回落,与此同时,有色和电池板块...
“农夫”们才入局,补水啦已经签... 文 | 陶魏斌2026年世界杯开赛在即,补水啦官宣了自己的品牌代言人——姆巴佩,当今足球世界的顶级球...
新市场扭亏、国内转型阵痛 极兔... 独立 稀缺 穿透仍有不少硬仗要打作者:闻道编辑:李莉风品:一然来源:铑财——铑财研究院新曲线越烧越旺...
盘后突发利空!油价涨破100,... 今天的行情再次应了那句话:不要光站在那里,要站在光里!隔壁港股大跌,A股低开高走,上证指数站上410...
纠结的万华化学:不论业绩如何,... 在周期股里,万华化学这两年的表现有点别扭,化工赛道热门企业华鲁恒升、新和成、卫星化学等纷纷在今年创出...
手机涨价潮来袭,OPPO刘作虎... 4月21日,OPPO正式发布Find X9s Pro与Find X9 Ultra 影像双旗舰新品。作...
航空业“油荒”危机将至:海湾出... 财联社4月22日讯(编辑 刘靖怡)随着全球航运咽喉霍尔木兹海峡因美伊对峙被封锁,海湾地区对国际市场的...
调研|平安银行对公和零售信贷投... 截至今年3月末,创业板上市公司占A股上市公司总数1/4,总市值近18万亿元,是全球最具活力的市场之一...