在本教程中,我们将学习如何精简Java运行时环境(JRE)并将其与Java应用程序一起打包成一个独立的可执行文件(EXE)。这对于多个原因非常有用,如减小文件大小、简化安装过程以及确保应用程序使用特定版本的Java运行时。
在这个教程中,我们将使用OpenJDK及其工具,以在Windows上进行操作。但是,这些步骤在Linux和macOS上也适用。
**前置要求**
下载并安装以下软件:
1. JDK:在 https://adoptopenjdk.net/ 下载适用于您的操作系统的最新版本的OpenJDK。
2. Launch4j: 在 http://launch4j.sourceforge.net/ 下载Launch4j压缩包(用于将JAR转换为EXE)。
**步骤1:编译Java源代码**
首先,我们需要编写一个简单的Java应用程序并将其编译为JAR文件。例如,以下是一个名为`HelloWorld.java`的简单Java程序:
```java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
```
使用以下命令将此程序编译为HelloWorld.class:
```
javac HelloWorld.java
```
将其打包为名为`HelloWorld.jar`的JAR文件:
```
jar cvfe HelloWorld.jar HelloWorld HelloWorld.class
```
**步骤2:准备精简的JRE**
1. 创建一个名为`jlink`的目录。
2. 使用`jdeps`命令分析应用程序所需的模块:
```
jdeps --print-module-deps HelloWorld.jar
```
请注意输出的模块名称,我们将在下一步中使用它们。
3. 使用`jlink`命令创建自定义JRE,只包含应用程序所需的模块。将 `
```
jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules
```
这将创建一个精简版JRE,只包含应用程序需要的功能。
**步骤3:使用Launch4j打包JRE和JAR文件**
1. 解压并运行Launch4j。
2. 在"基本"标签下填写以下信息:
- "输出文件":这将是生成的.EXE文件。例如:HelloWorld.exe
- "jar":这是我们之前创建的JAR文件。例如:HelloWorld.jar
- "不捆绑的JRE路径":从上一步骤生成的精简JRE文件夹(例如`jlink`)。
3. 在"JRE"标签页下配置以下选项:
- "最低版本":<可以设置为您使用的OpenJDK版本>
- "捆绑的JRE路径":与"不捆绑的JRE路径"相同。
4. 单击“构建”按钮以创建有精简JRE的EXE文件。
现在,您已经成功地将应用程序打包成了一个独立的EXE文件,该文件可以在没有预安装Java的计算机上运行。最后,您可以在压缩JRE文件夹和EXE文件后将其分发给其他用户。