精简jre打包exe

在本教程中,我们将学习如何精简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 --output jlink

```

这将创建一个精简版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文件后将其分发给其他用户。