专栏首页云架构修炼手册java9导出运行springboot的精简版jre

java9导出运行springboot的精简版jre

为了分发一个springboot项目,在不考虑目标机器是否有jre的情况下,携带一个jre环境是一个选择。本文就尝试从原生的jdk 9.0.1 精简一个jre供分发。

实际情况可能略有不同,比如目标机器不同,jre是否兼容,未测试。

使用基本的eureka-server项目测试可运行。其他项目可能根据依赖的基础模块进行相应调整。

基本导出命令

以下是最基本的命令。

$J/bin/jlink -p $J/jmods --add-modules java.base --output jre

当然,只有java.base 是不行的。可以测试运行,会看到很多ClassNotFound,可以找一下这些类在哪个模块里,增加对应的模块。

查找某个类在哪个mod中

当遇到测试执行时提示找不到某个类时,如:java.beans.PropertyEditor,可执行如下命令进行查找。

ls $J/jmods/java.*.jmod |xargs -ti jmod list {} |grep java.beans.PropertyEditor
...
jmod list /opt/jdk-9.0.1/jmods/java.desktop.jmod
classes/java/beans/PropertyEditorManager.class
classes/java/beans/PropertyEditorSupport.class
classes/java/beans/PropertyEditor.class
jmod list /opt/jdk-9.0.1/jmods/java.instrument.jmod
...

就可以知道,该类在java.desktop.jmod 中。那么相应调整命令行:

$J/bin/jlink -p $J/jmods --add-modules java.base,java.desktop --output jre

以此类推。

最终结果

$J/bin/jlink -p $J/jmods --add-modules java.base,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,java.rmi,java.xml.bind --output jre

默认的jre的大小:

$ du -sh $J
557M	/opt/jdk-9.0.1

$ du -sh /opt/jdk1.8.0_151/jre
205M	/opt/jdk1.8.0_151/jre

精简的jre的大小:

$ du -sh jre
95M	jre

测试启动

./jre/bin/java -jar eureka-server-0.0.1-SNAPSHOT.jar

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 11 新特性

    java 11 是继 java8 之后的第一个LTS版本。因此有必要针对它进行一些深入的学习,虽然短时间内java8 还是主流版本。当然,如果从java8基础上...

    pollyduan
  • linux命令行批量创建目录

    root@vm1:~/tmp# mkdir -p src/{{main,test}/{java,resources},main/webapp} root@vm...

    pollyduan
  • linux下使用update-alternatives切换java版本的正确姿势

    之前的文章说明了使用文件夹管理来代替原来的当个命令配置的方式,不过这个是属于个人使用的方式,并不是规范的通用的方式。

    pollyduan
  • 「大学生学编程系列」如何学习java?

    java目前在编程语言排行中还是稳稳的第一名,生态链系统越来越稳健,java语言已经慢慢步入成熟期,随之带来的是就业门槛的提升,这也是编程发展的一个趋势,未来编...

    程序员互动联盟
  • java学习需要具备什么技能

    很多人都想学习java编程技术,但是却不知道java学习需要具备什么技能,java本身就具备简单易学性和应用广泛性,下面一起看看java学习是需要具备什么技能。

    加米谷大数据
  • Java项目中使用最多的排名前100的类,你用的最多的是哪些

    从事Java软件开发工作很大程度是要利用各种类库的api,有组织曾经从10000个开放源码的Java项目中,统计API类的使用频率;下面的列表显示了前100名。...

    用户1289394
  • [有人@我]你的免费10G+Java课程还未领取

    java作为最热门的编程语言,它无处不在。目前全球有着数10亿的设备正在运行着java,全球80%的服务器程序都是用它编写,用以处理每天超过5000w+的数据。

    Java团长
  • 列举Java中常用的包、类和接口

      javax.servlet    org.apache.struts.action

    Kevin_Zhang
  • 常用的类,包,接口,各5个

    MickyInvQ
  • 为什么java越来越强势

    ? 目前很多的从业都有这种感觉,突然觉得c/c++就业机会以及升职的空间比java的差距越来越大了,有人就宣称java是目前国内就业最好的语言,说的有点夸张但...

    Java帮帮

扫码关注云+社区

领取腾讯云代金券