JDK9及之后版本使用 jlink 生成定制化的 JRE

news2024/11/24 5:00:36

许多java软件的运行需要依赖jre,在 jdk8 之后,不再提供默认的 jre,后续如果项目中还是想用 jre 的形式发布软件,那么可以使用 jlink 工具生成 jre。

一、jlink 命令详解

jlink

二、查看jdk中包含的所有模块

如果在 jdk 安装文件夹下执行下述命令,可以看到其中包含的模块,模块所在文件夹与bin同级,文件夹名为jmods,下述是详细使用步骤图示。

bin\java --list-modules

1.打开“jdk”安装文件夹,输入“cmd”后点击回车

2.dos控制台窗口中输入下述命令,即可查看jdk中包含的所有模块

bin\java --list-modules

 

结果如: jdk 11

java.base@11.0.19

java.compiler@11.0.19

java.datatransfer@11.0.19

java.desktop@11.0.19

java.instrument@11.0.19

java.logging@11.0.19

java.management@11.0.19

java.management.rmi@11.0.19

java.naming@11.0.19

java.net.http@11.0.19

java.prefs@11.0.19

java.rmi@11.0.19

java.scripting@11.0.19

java.se@11.0.19

java.security.jgss@11.0.19

java.security.sasl@11.0.19

java.smartcardio@11.0.19

java.sql@11.0.19

java.sql.rowset@11.0.19

java.transaction.xa@11.0.19

java.xml@11.0.19

java.xml.crypto@11.0.19

jdk.accessibility@11.0.19

jdk.attach@11.0.19

jdk.charsets@11.0.19

jdk.compiler@11.0.19

jdk.crypto.cryptoki@11.0.19

jdk.crypto.ec@11.0.19

jdk.crypto.mscapi@11.0.19

jdk.dynalink@11.0.19

jdk.editpad@11.0.19

jdk.hotspot.agent@11.0.19

jdk.httpserver@11.0.19

jdk.internal.ed@11.0.19

jdk.internal.jvmstat@11.0.19

jdk.internal.le@11.0.19

jdk.internal.opt@11.0.19

jdk.internal.vm.ci@11.0.19

jdk.internal.vm.compiler@11.0.19

jdk.internal.vm.compiler.management@11.0.19

jdk.jartool@11.0.19

jdk.javadoc@11.0.19

jdk.jcmd@11.0.19

jdk.jconsole@11.0.19

jdk.jdeps@11.0.19

jdk.jdi@11.0.19

jdk.jdwp.agent@11.0.19

jdk.jfr@11.0.19

jdk.jlink@11.0.19

jdk.jshell@11.0.19

jdk.jsobject@11.0.19

jdk.jstatd@11.0.19

jdk.localedata@11.0.19

jdk.management@11.0.19

jdk.management.agent@11.0.19

jdk.management.jfr@11.0.19

jdk.naming.dns@11.0.19

jdk.naming.ldap@11.0.19

jdk.naming.rmi@11.0.19

jdk.net@11.0.19

jdk.pack@11.0.19

jdk.rmic@11.0.19

jdk.scripting.nashorn@11.0.19

jdk.scripting.nashorn.shell@11.0.19

jdk.sctp@11.0.19

jdk.security.auth@11.0.19

jdk.security.jgss@11.0.19

jdk.unsupported@11.0.19

jdk.unsupported.desktop@11.0.19

jdk.xml.dom@11.0.19

jdk.zipfs@11.0.19

结果如: jdk 17

java.base@17.0.9

java.compiler@17.0.9

java.datatransfer@17.0.9

java.desktop@17.0.9

java.instrument@17.0.9

java.logging@17.0.9

java.management@17.0.9

java.management.rmi@17.0.9

java.naming@17.0.9

java.net.http@17.0.9

java.prefs@17.0.9

java.rmi@17.0.9

java.scripting@17.0.9

java.se@17.0.9

java.security.jgss@17.0.9

java.security.sasl@17.0.9

java.smartcardio@17.0.9

java.sql@17.0.9

java.sql.rowset@17.0.9

java.transaction.xa@17.0.9

java.xml@17.0.9

java.xml.crypto@17.0.9

jdk.accessibility@17.0.9

jdk.attach@17.0.9

jdk.charsets@17.0.9

jdk.compiler@17.0.9

jdk.crypto.cryptoki@17.0.9

jdk.crypto.ec@17.0.9

jdk.crypto.mscapi@17.0.9

jdk.dynalink@17.0.9

jdk.editpad@17.0.9

jdk.hotspot.agent@17.0.9

jdk.httpserver@17.0.9

jdk.incubator.foreign@17.0.9

jdk.incubator.vector@17.0.9

jdk.internal.ed@17.0.9

jdk.internal.jvmstat@17.0.9

jdk.internal.le@17.0.9

jdk.internal.opt@17.0.9

jdk.internal.vm.ci@17.0.9

jdk.internal.vm.compiler@17.0.9

jdk.internal.vm.compiler.management@17.0.9

jdk.jartool@17.0.9

jdk.javadoc@17.0.9

jdk.jcmd@17.0.9

jdk.jconsole@17.0.9

jdk.jdeps@17.0.9

jdk.jdi@17.0.9

jdk.jdwp.agent@17.0.9

jdk.jfr@17.0.9

jdk.jlink@17.0.9

jdk.jpackage@17.0.9

jdk.jshell@17.0.9

jdk.jsobject@17.0.9

jdk.jstatd@17.0.9

jdk.localedata@17.0.9

jdk.management@17.0.9

jdk.management.agent@17.0.9

jdk.management.jfr@17.0.9

jdk.naming.dns@17.0.9

jdk.naming.rmi@17.0.9

jdk.net@17.0.9

jdk.nio.mapmode@17.0.9

jdk.random@17.0.9

jdk.sctp@17.0.9

jdk.security.auth@17.0.9

jdk.security.jgss@17.0.9

jdk.unsupported@17.0.9

jdk.unsupported.desktop@17.0.9

jdk.xml.dom@17.0.9

jdk.zipfs@17.0.9

三、使用 jlink 工具生成 jre

可以在 jdk 安装文件夹下使用以下命令(windows)生成 myjre

bin\jlink --module-path jmods --add-modules java.base,java.desktop --output myjre

linux系统执行以下命令生成 myjre:

./bin/jlink.exe --module-path jmods --add-modules java.desktop --output myjre

 

注:

1.如果JDK安装文件夹在C:\Program Files\Java\jdk11.0.18,由于系统权限问题无法生成,需要将JDK安装文件夹复制到其他目录中。

2.这条命令是使用Java的jlink工具来创建一个包含java.desktop模块的自定义的运行时映像(JRE),并将其输出到名为myjre的文件夹中。以下逐一解析这条命令的各个部分:

2.1 **bin\jlink.exe**:这是jlink工具的执行路径。jlink是Java 9及更高版本中引入的一个工具,它允许开发者创建一个自定义的JRE,只包含他们需要的Java模块。

2.2 **--module-path jmods**:这个选项指定了模块路径。jmods目录应该包含.jmod文件,这些文件描述了Java的模块。

2.3 **--add-modules java.desktop**:这个选项指定了需要包含在自定义JRE中的模块。在这个例子中,我们添加了java.desktop模块。这意味着JRE将包含该模块及其依赖项。

2.4 **--output myjre**:这个选项指定了输出目录,即生成的JRE将被放置的位置。在这个例子中,输出的是名为myjre的文件夹。

生成后的jre所在文件夹为myjre,在myjre文件夹下执行下述命令来查看 myjre 中添加的模块。

bin\java --list-modules

四、NoClassDefFound错误原因及解决方法

如果在使用自定义的 jre 运行 java 程序时,出现 NoClassDefFound 错误

原因:jre 中没有添加相关的模块。

解决方法: 首先,需要确定缺少的 class 存在于那个 jdk module 中,然后在 jlink 命令中添加到 --add-modules 列表中,重新生成 jre 就可以了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1343625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css 用多个阴影做出光斑投影的效果 box-shadow

css 用多个阴影做出光斑投影的效果 box-shadow 你首先需要知道的一点是 box-shadow 可以接收多个值,也就是可以设置多个阴影,这样就可以做一个类似光斑投影的效果。 一、效果 二、代码 里面用到了我一些 scss 工具方法,不过不影响&#xf…

Android MVP 写法

前言 Model:负责数据逻辑 View:负责视图逻辑 Presenter:负责业务逻辑 持有关系: 1、View 持有 Presenter 2、Model 持有 Presenter 3、Presenter 持有 View 4、Presenter 持有 Model 辅助工具:ViewBinding 执行…

【华为机试】2023年真题B卷(python)-观看文艺汇演-计算演出场次

一、题目 题目描述: 一个人只能同时观看一场演出,且不能迟到早退,由于演出分布在不同的演出场地,所以连续观看的演出最少有15分钟的时间间隔,小明是一个狂热的文艺迷,想观看尽可能多的演出, 现给…

【并发设计模式】聊聊线程本地存储模式如何实现的线程安全

前面两篇文章,通过两阶段终止的模式进行优雅关闭线程,利用数据不变性的方式保证数据安全,以及基于COW的模式,保证读数据的安全。本篇我们来简述下如果利用线程本地存储的方式保证线程安全。 首先一个大前提就是并发问题&#xff…

八皇后问题(C语言)

了解题意 在一个8x8的棋盘上放置8个皇后,使得任何两个皇后都不能处于同一行、同一列或同一斜线上。问有多少种方法可以放置这8个皇后? 解决这个问题的目标是找到所有符合要求的皇后摆放方式,通常使用回溯算法来求解。回溯算法会尝试所有可能…

[蓝桥杯2022省赛] X 图形

X 图形 问题描述 给定一个字母矩阵。一个 X 图形由中心点和由中心点向四个 4545 度斜线方向引出的直线段组成,四条线段的长度相同,而且四条线段上的字母和中心点的字母相同。 一个 X 图形可以使用三个整数r,c,L 来描述,其中 r,c 表示中心点…

PiflowX组件-ReadFromKafka

ReadFromKafka组件 组件说明 从kafka中读取数据。 计算引擎 flink 有界性 Unbounded 组件分组 kafka 端口 Inport:默认端口 outport:默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子kafka_hostKAFKA_HOST“”无是逗号分隔的Ka…

腾讯云标准型S5服务器4核8G配置优惠价格表

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表,轻量应用服务器和CVM云服务器均有活动,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,轻量应用服务器4核8G12M带宽一年446元、529元15个月,腾讯云…

malloc、calloc、realloc、free函数的使用及注意事项

malloc函数 malloc函数的返回值为void*类型 内存管理函数操作的内存是在堆区空间 malloc函数使用示例 free(p)相当于值传递,不能改变p本身。 free只是释放了空间,释放后p依然指向原地址,故需要手动置NULL。 calloc函数 calloc可以指定开辟n个…

【Week-P3】CNN天气识别

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结6.1 不改变学习率的前提下,将训练epoch分别增加到50、60、70、80、90(1)epoch 50 的训练情况如下:(2)epoch 60 …

UE4运用C++和框架开发坦克大战教程笔记(十二)(第37~39集)

UE4运用C和框架开发坦克大战教程笔记(十二)(第37~39集) 37. 延时事件系统38. 协程逻辑优化更新39. 普通按键绑定 37. 延时事件系统 由于梁迪老师是写 Unity 游戏出身的,所以即便 UE4 有自带的 TimeManager 这样的延时…

直方图与均衡化

直方图 统计图像中相同像素点的数量。 使用cv2.calcHist(images, channels, mask, histSize, ranges)函数 images:原图像图像格式为uint8或float32,当传入函数时应用[]括起来,例如[img]。 channels:同样用中括号括起来&#xff…

pytest pytest-html优化样式

conftest.py import pytest from pytest_metadata.plugin import metadata_keydef pytest_html_report_title(report):report.title"接口测试报告"def pytest_configure(config):# 获取命令行参数中的测试环境、测试版本、开始时间、测试人员config.stash[metadata_…

鸿蒙Harmony(七)ArkUI--循环foreachList组件自定义组件

循环foreach import Prompt from system.promptclass Item {icon: Resourcename: stringprice: numberconstructor(icon: Resource, name: string, price: number) {this.icon iconthis.name namethis.price price} }Entry Component struct Index {State message: string …

Linux 安装Jupyter notebook 并开启远程访问

文章目录 安装Python安装pip安装Jupyter启动Jupyter Notebook1. 生成配置文件2. 创建密码3. 修改jupyter notebook的配置文件4. 启动jupyter notebook5. 远程访问jupyter notebook 安装Python 确保你的系统上已经安装了Python。大多数Linux发行版都预装了Python。你可以在终端…

flutter 之proto

和嵌入式用proto协议来通信,以mac来演示 先在电脑上安装protobuf(在博主文章内容里面搜Mac安装protobuf),然后在桌面上放这几个文件,且build_proto_dart.sh文件内容如图所示 #!/bin/bashSCRIPT$(readlink -f "$0…

NFC物联网智能学生宿舍系统设计方案

随着物联网技术的不断发展,智慧城市、智能家居、智慧校园的建设也在如火如茶地进行。本文结合物联网发展过程中相关的技术,应用到智慧校园的建设过程中,将学生宿舍打造成舒适、安全的集体空间,该系统可以对学生宿舍实现智能开门、…

Python爬虫教程30:Selenium网页元素,定位的8种方法!

Selenium可以驱动浏览器,完成各种网页浏览器的模拟操作,比如模拟点击等。要想操作一个元素,首先应该识别这个元素。人有各种的特征(属性),我们可以通过其特征找到人,如通过身份证号、姓名、家庭…

云短信平台优惠活动 - 华为OD统一考试

OD统一考试 题解: Java / Python / C++ 题目描述 某云短信厂商,为庆祝国庆,推出充值优惠活动。 现在给出客户预算,和优惠售价序列,求最多可获得的短信总条数。 输入描述 第一行客户预算M,其中 0<=M<=100 第二行给出售价表,P1,P2,… Pn, 其中 1<=n<=100…

下载和安装AD14 - Altium Designer 14.3.20.54863

这个版本应该还支持XP 系统[doge]&#xff0c;总之就是想安装一下&#xff0c;没什么特别的意义。 下载 资源来自毛子网站&#xff1a;https://rutracker.net/forum/viewtopic.php?t5140739&#xff0c;带上个网页翻译插件就行。要用磁力链接下载&#xff0c;推荐用qbittorr…