java9导出运行springboot的精简版jre

简介: 为了分发一个springboot项目,再不考虑目标机器是否有jre的情况下,携带一个jre环境是一个选择。本文就尝试从原生的jdk 9.0.1 精简一个jre供分发。 实际情况可能略有不同,比如目标机器不同,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
目录
相关文章
|
20天前
|
缓存 前端开发 Java
【Java】仓库管理系统 SpringBoot+LayUI+DTree(源码)【独一无二】
【Java】仓库管理系统 SpringBoot+LayUI+DTree(源码)【独一无二】
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
25天前
|
Java 应用服务中间件 Spring
SpringBoot出现 java.lang.IllegalArgumentException: Request header is too large 解决方法
SpringBoot出现 java.lang.IllegalArgumentException: Request header is too large 解决方法
42 0
|
5天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
33 10
|
5天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
6天前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
26 6
|
15天前
|
Java 应用服务中间件 Linux
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
Caused by: java.lang.UnsatisfiedLinkError: /root/jdk1.7.0_45/jre/lib/amd64/xawt/libmawt.so: libXrend
|
20天前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。
|
24天前
|
Java Maven Spring
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
SpringBoot运行出现 Lookup method resolution failed; nested exception is java.lang.IllegalStateException
30 0
|
25天前
|
存储 Java Spring
SpringBoot的 jar 可以直接运行
SpringBoot的 jar 可以直接运行
14 0

热门文章

最新文章