JLink 使用教程:从入门到精通

简介: 本文提供了JLink工具的使用教程,包括入门、进阶和高级篇,涉及创建运行时镜像、添加模块、自定义启动器、压缩镜像、自定义运行时参数和配置文件等内容,旨在帮助用户创建独立的Java应用程序运行时环境。
1. 什么是 JLink?

JLink 是 JDK 自带的一个工具,用于创建和操纵自包含的运行时镜像。这意味着你可以将你的 Java 应用程序、依赖项和 JRE 打包成一个独立的可执行文件夹,里面自带java所需的东西,而无需依赖外部的 JRE。

2. 入门篇
2.1 安装 JDK

首先,确保你的系统上已经安装了 JDK。你可以从 Oracle 或 OpenJDK 下载并安装最新的 JDK 版本。

2.2 编写一个简单的 Java 程序

创建一个简单的 Java 程序,例如 HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
2.3 编译 Java 程序

使用 javac 编译你的程序:

javac HelloWorld.java
2.4 使用 JLink 创建运行时镜像

执行以下命令创建运行时镜像:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage

这个命令会创建一个包含了 java.base 模块的运行时镜像,并将其输出到 HelloWorldImage 目录中。

2.5 运行应用程序

进入 HelloWorldImage/bin 目录,执行生成的可执行文件:

./java -m HelloWorld

你将看到输出:Hello, World!

3. 进阶篇
3.1 添加模块

如果你的应用程序有其他模块依赖,可以通过 --add-modules 选项将它们添加到运行时镜像中:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base,java.logging,java.sql --output HelloWorldImage
3.2 自定义运行时镜像

通过 --launcher 选项可以为你的应用程序创建一个自定义启动器:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --launcher start=java.base/java

这将创建一个名为 start 的启动器,使你可以运行应用程序:

./start -m HelloWorld
3.3 压缩运行时镜像

使用 --compress 选项可以压缩运行时镜像,减小镜像的大小:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --compress 2

这里的 2 表示使用 ZIP 压缩,可以根据需要选择其他级别。

4. 高级篇
4.1 自定义运行时参数

使用 --vm 选项可以为运行时环境指定自定义参数:

jlink --module-path $JAVA_HOME/jmods --add-modules java.base --output HelloWorldImage --vm "args=-Xmx256m"
4.2 配置文件

通过创建一个配置文件(jlink.conf)可以进一步配置 JLink 的行为:

--module-path $JAVA_HOME/jmods
--add-modules java.base
--output HelloWorldImage
--launcher start=java.base/java
--compress 2
--vm "args=-Xmx256m"

然后运行:

jlink @jlink.conf
结语

通过本教程,你应该能够入门并掌握 JLink 工具的基本使用。随着你的实践和深入研究,你可以更灵活地使用 JLink 以满足特定项目的需求。希望这个教程能帮助你更好地利用 JLink 来创建自包含的 Java 应用程序。

目录
相关文章
|
监控 NoSQL
JLink + GDB 调试方法
本节主要介绍嵌入式开发中常用的JLink+GDB调试方法。 调试所需软件 J-link,可以从https://www.segger.com下载对应操作系统的软件包,然后安装(注意:segger是仿真器的名字,相当常用的一款,仿真器的接口也是固定的,一般开发版上都会带有这个调试接口,如图) 运行JLinkGDBServer 按照上图中的配置,配置GDBServer,然后点击OK,进入下一个界面 注意,如果硬件连接没有问题,那么上图中的J-Link和 Device栏中显示绿色,GDB显示为红色,因为我们还没有运行GDB软件。
9457 46
|
传感器
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
6080 1
STM32:红外传感器代码部分(内含实物图+外部信号流程,编写代码思路+代码+解析代码和扩展应用)
|
移动开发 前端开发 Java
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
15634 5
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
|
Java 开发者
Java一分钟之-JavaFX布局管理:GridPane, VBox, HBox
本文介绍了JavaFX的三种常用布局管理器:GridPane、VBox和HBox。GridPane用于创建二维网格布局,需设置行和列约束以防止控件重叠。VBox按垂直方向堆叠控件,记得设置间距。HBox水平排列控件,可能需要分配额外空间以避免水平滚动条。示例代码展示了这三种布局的使用。理解并运用这些布局管理器能提升JavaFX应用的界面设计。
826 0
|
监控 安全 数据安全/隐私保护
什么是OTA升级模式?
【7月更文挑战第20天】什么是OTA升级模式?
6705 8
|
Java 开发者
javafx jlink 遇到的非模块化的依赖打包报错“模块异常”的问题和处理
【9月更文挑战第18天】在使用JavaFX的jlink进行应用打包时,非模块化依赖可能导致“模块异常”报错。此文档详细分析了该问题的原因,并提供了四种解决方案:模块化依赖、自动模块转换、手动创建模块描述符及检查模块依赖关系。通过这些方法,可以有效解决此类问题,提高项目的可维护性和扩展性。建议开发者优先选用模块化设计。
1463 1
Java系类 之 生成随机数(random()和Random类)
这篇文章介绍了Java中生成随机数的两种方法:使用`Math.random()`方法和`Random`类的实例方法,并提供了示例代码展示如何使用这些方法生成特定范围或特定条件下的随机数。
|
JavaScript 前端开发 关系型数据库
入职必会-开发环境搭建28-VSCode下载和安装
Visual Studio Code(简称 VS Code)是由微软开发的免费开源代码编辑器,支持几乎所有主流操作系统,包括 Windows、macOS 和 Linux。它具有丰富的功能和扩展性,适用于各种编程语言和应用场景。
762 0
|
Windows
使用dumpbin工具查看动态库中函数列表
使用dumpbin工具查看动态库中函数列表
3072 0
|
Java
把javafx项目打包成exe文件详细过程
本文简化了将JavaFX项目打包成exe文件的过程,首先通过Idea将项目打包成jar包,然后使用GraalVM的native-image工具将jar包编译成exe文件,并展示了执行命令和运行结果。
1195 0
把javafx项目打包成exe文件详细过程