Java 11使用jlink命令根据自己的程序定制精简版jre

向右看齐 2022-10-29 09:08 923阅读 0赞

曾经使用java 8进行开发时,做出来的程序如果要想给没安装java的人运行,就总是要把jre一起复制出来并和程序放一起。原本可能几十k的程序加上了jre就有上百M了,7z最大压缩后也有40几MB。

不过java 11解决了这个问题。java 11没有jre了,可以按需生成一个精简版的jre,只需把需要用到的模块放入jre即可。

配置完成jdk 11环境变量之后,就可以进行jre定制生成了。

我这里有一个app.jar文件,通过jdeps命令来查看这个jar包运行需要什么模块。

命令格式:

  1. jdeps --list-deps jar文件.jar

我这里执行命令结果如下:

20210210201159995.png

说明需要java.base和java.logging模块。

现在使用jlink命令定制jre,命令格式:

  1. jlink --module-path "java模块位置" --add-modules 加入需要的模块,多个用英文逗号隔开 --output "指定生成的jre文件夹路径"

java模块位置一般在jdk安装目录\jmods下,命令行中我们可以使用”%JAVA_HOME%\jmods”来表示。

我这里执行命令如下:

2021021020175636.png

这样就在当前目录下生成了jre11文件夹即为我们定制的jre,大小就精简多了。

20210210201913886.png

调用生成的jre文件夹\bin\java.exe运行我们的程序即可。

发表评论

表情:
评论列表 (有 0 条评论,923人围观)

还没有评论,来说两句吧...

相关阅读

    相关 精简JRE思路初探

    引言: JRE是Java程序赖以运行的基础环境,目前JRE已经非常的庞大;即使为了运行一个简单的Hello World的程序,可能依然需要依赖整个JRE,将近百兆大小的依赖性。

    相关 精简jre

    精简jre简单教程 写一些swing小程序,需要附带一个很大的jre文件夹,显然这是不现实的,使用起来也不方便,当然如果电脑有java环境就不需要这样,但是如果没有java环