1. 概述
在本教程中,我们将首先学习如何将Java程序打包到可执行的Java ARchive(JAR)文件中。然后,我们将了解如何使用该可执行JAR生成Microsoft Windows支持的可执行文件。
我们将使用Java附带的jar命令行工具来创建JAR文件。然后,我们将学习使用jpackage工具(在Java 16及更高版本中作为jdk.jpackage提供)来生成可执行文件。
2. jar和jpackage命令的基础知识
JAR文件是已编译的Java类文件和其他资源的容器,它基于流行的ZIP文件格式。
可执行JAR文件也是一个JAR文件,但也包含一个主类。主类在manifest文件中引用,我们将在稍后讨论。
为了运行以JAR格式交付的应用程序,我们必须拥有Java运行时环境(JRE)。
与JAR文件不同,特定于平台的可执行文件可以在其构建的平台上本地运行。例如,该平台可以是Microsoft Windows、Linux或Apple macOS。
为了获得良好的最终用户体验,最好为客户提供特定于平台的可执行文件。
2.1 jar命令
创建JAR文件的一般语法是:
jar cf jar-file input-file(s)
让我们来看看在使用jar命令创建新存档时可以使用的一些选项:
- c指定我们要创建一个JAR文件
- f指定我们希望输出到一个文件
- m用于包含来自现有清单文件的清单信息
- jar-file是我们希望生成的JAR文件的名称,JAR文件通常带有.jar扩展名,但这不是必需的
- input-file(s)是我们要包含在我们的JAR文件中的以空格分隔的文件名列表,通配符*也可以在这里使用
创建JAR文件后,我们通常会检查它的内容。要查看JAR文件包含的内容,我们使用以下语法:
jar tf jar-file
这里,t表示我们要列出JAR文件的内容。f选项表示我们要检查的JAR文件是在命令行上指定的。
2.2 jpackage命令
jpackage命令行工具帮助我们为模块化和非模块化Java应用程序生成可安装的软件包。
它使用jlink命令为我们的应用程序生成Java运行时镜像。结果,我们获得了针对特定平台的自包含应用程序包。
由于应用程序包是为目标平台构建的,因此该系统必须包含以下内容:
- 应用程序本身
- JDK
- 打包工具需要的软件。对于Windows,jpackage需要WiX 3.0或更高版本
下面是jpackage命令的常用形式:
jpackage --input . --main-jar MyAppn.jar
3. 创建可执行文件
现在让我们创建一个可执行的JAR文件。准备就绪后,我们将着手生成Windows可执行文件。
3.1 创建可执行JAR文件
创建可执行JAR非常简单。我们首先需要一个Java项目,其中至少有一个带有main()方法的类。我们为示例创建了一个名为MySampleGUIAppn的Java类。
第二步是创建清单文件,让我们将清单文件创建为MySampleGUIAppn.mf:
Manifest-Version: 1.0
Main-Class: MySampleGUIAppn
我们必须确保此清单文件末尾有换行符,它才能正常工作。
清单文件准备就绪后,我们将创建一个可执行JAR:
jar cmf MySampleGUIAppn.mf MySampleGUIAppn.jar MySampleGUIAppn.class MySampleGUIAppn.java
让我们查看我们创建的JAR的内容:
jar tf MySampleGUIAppn.jar
这是一个示例输出:
META-INF/
META-INF/MANIFEST.MF
MySampleGUIAppn.class
MySampleGUIAppn.java
接下来,我们可以通过CLI或GUI运行我们的JAR可执行文件。
让我们在命令行上运行它:
java -jar MySampleGUIAppn.jar
在GUI中,我们只需双击相关的JAR文件即可,这应该像任何其他应用程序一样正常启动它。
3.2 创建Windows可执行文件
现在我们的可执行JAR已准备就绪并可以运行,让我们为示例项目生成一个Windows可执行文件:
jpackage --input . --main-jar MySampleGUIAppn.jar
此命令需要一段时间才能完成。完成后,它会在当前工作文件夹中生成一个exe文件。可执行文件的文件名将与清单文件中提到的版本号拼接,我们将能够像启动任何其他Windows应用程序一样启动它。
以下是我们可以与jpackage命令一起使用的一些特定于Windows的选项:
- –type:指定msi而不是默认的exe格式
- –win-console:使用控制台窗口启动我们的应用程序
- –win-shortcut:在Windows开始菜单中创建一个快捷方式文件
- –win-dir-chooser:让最终用户指定自定义目录来安装可执行文件
- –win-menu–win-menu-group:让最终用户在开始菜单中指定自定义目录
4. 总结
在本文中,我们介绍了有关JAR文件和可执行JAR文件的一些基础知识。我们还了解了如何将Java程序转换为JAR可执行文件,然后再转换为Microsoft Windows支持的可执行文件。
与往常一样,本教程的完整源代码可在GitHub上获得。