java9导出运行springboot的精简版jre
2017-12-27 13:53
246 查看
基本导出命令
查找某个类在哪个mod中
最终结果
测试启动
为了分发一个springboot项目,在不考虑目标机器是否有jre的情况下,携带一个jre环境是一个选择。本文就尝试从原生的jdk 9.0.1 精简一个jre供分发。
实际情况可能略有不同,比如目标机器不同,jre是否兼容,未测试。
使用基本的eureka-server项目测试可运行。其他项目可能根据依赖的基础模块进行相应调整。
当然,只有java.base 是不行的。可以测试运行,会看到很多ClassNotFound,可以找一下这些类在哪个模块里,增加对应的模块。
就可以知道,该类在java.desktop.jmod 中。那么相应调整命令行:
以此类推。
默认的jre的大小:
精简的jre的大小:
查找某个类在哪个mod中
最终结果
测试启动
为了分发一个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
相关文章推荐
- SpringBoot打war包并部署到外部tomcat运行(jar工程改造为正war工程)
- Excel导入导出(ant design+spring boot)
- 使用spring-boot-starter-data-jpa 怎么配置使运行时输出SQL语句
- 快速构建可运行的Spring-boot项目(Hello World)
- SpringBoot 项目如何在tomcat容器中运行
- SpringBoot学习-(十六)SpringBoot发布到独立的tomcat中运行
- Springboot+Mybatis+Maven项目导出.csv文件
- 自己现实mybatis分页插件 整合springboot 运行
- IDEA 配置maven + SpringBoot项目在新电脑上的配置运行
- spring boot 打包发布到外部tomcat 运行--操作手册
- spring boot编写并运行HelloWorld服务接口
- 第一个 spring Boot 应用通过Docker 来实现构建、运行、发布
- SpringBoot15-springboot核心-Spring Boot运行原理
- SpringMVC/SpringBoot使用easypoi实现Excel文件导入导出功能实现
- Spring Boot直接导出jar包发布运行
- springboot的简单应用和在linux下运行
- 快速构建可运行的Spring-boot项目(Hello World)
- 用 Docker 构建、运行、发布来一个 Spring Boot 应用
- spring boot 运行流程简析
- SpringBoot运行的实例