< 返回博客

如何为 Java 应用程序创建安装程序

Vladyslav Lubenskyi

2022 年 3 月 23 日

当用 Java 编写桌面应用程序时,我们希望它们看起来和感觉是原生的。 一个好的应用程序会融入其中。它提供了用户已经熟悉的体验。

Swing GUI 外观和感觉:Metal 与 Native

在桌面上,用户旅程并不是在应用程序本身内开始的。 它从安装程序开始。 这就是 Java 世界曾经落后的地方。 但现在不再了。

从Java 16开始,JDK自带了jpackage。 该工具将应用程序打包到带有内置 JRE 的捆绑包中,并将其包装到本机安装程序和可执行文件中。

在本文中,我将演示如何将 jpackage 与 JxBrowser 应用程序一起使用。 我将创建一个简单的 JxBrowser 应用程序,将其包装到本机安装程序和可执行程序中。 我将为您提供代码片段,您可以将其直接复制到您的项目中。

配置 Gradle

我的目标是创建一个简单的番茄钟跟踪器,安装它,并将其作为本机操作系统应用程序启动。 它将使用 Gradle 进行构建配置,使用 Swing 进行用户界面。

让我们从头开始创建一个空的 Gradle 项目:

打开 build.gradle.kts 并应用 Java 插件:

我们的应用程序需要两个 JxBrowser 依赖项。 其中之一包含带有 Chromium 二进制文件的核心 API。 另一种实现了 Swing 工具包支持。

让我们使用 JxBrowser Gradle 插件来添加必要的依赖项。

在上面的代码片段中,我使用 jxbrowser.currentPlatform 来检测当前平台并仅挑选必要的 Chromium 二进制文件。 如果您正在构建一个仅限 Windows 的应用程序,您可以显式指定适用于 Windows 的 Chromium 二进制文件:

应用代码

我们的应用程序非常简单。 它打开一个 JFrame,添加 BrowserView 组件,该组件使用 Pomodoro Tracker 加载和显示网页。

获得强大且可靠的 Java 浏览器控件。

打包应用程序

用 Java 编写的桌面应用程序需要携带运行时所需的所有必要库。 通常的方法是将库与应用程序合并到一个大的 Uber JAR 中。 它需要额外的配置,并且不适合模块化项目。

现在有一个更简单的选择:将一堆 JAR 文件收集在一个文件夹中,然后让 jpackage 处理其余的事情。

首先,让我们配置构建主应用程序 JAR:

然后让我们创建一个任务来收集依赖项的 JAR 文件:

这两个任务足以从命令行启动应用程序:

现在一切准备就绪,可以配置jpackage了。

这是一个命令行工具。 然而,我更喜欢将所有内容都保留在 Gradle 脚本中。 它们比一堆 .sh 和 .bat 文件更容易阅读和维护。

我推荐 org.panteleyev.jpackage 插件。 该插件将 jpackage 的命令行 API 包装到 Gradle DSL 中。 应用方法如下:

以下是我如何配置它来生成安装程序:

配置完所有内容后,唯一要做的就是调用 jpackage 任务。 任务完成后,我们将在 build/dist 目录中找到安装程序:

对于 Windows,您需要联系我们

安装程序正在运行

源代码

您可以在 GitHub 存储库中找到该应用程序的源代码。





   |    备案号:京ICP备09015132号-1044