将 JavaFX 应用程序与 openjdk 11 + 运行时捆绑在一起Modular Java, jlink, & jpackage 不再有 JRE

2022-09-04 08:42:51

我创建了一个小型的HelloWorld Java应用程序,它依赖于OpenJDK 11和JavaFX。该应用程序被打包在一个jar文件中,只有当我分别在系统上安装了Java 11和JavaFX时,才能运行该文件。

现在我想将我的jar转换为一个独立的Java应用程序,其中包括JavaFX和功能齐全的Java运行时环境。这将允许我在不安装OpenJDK 11的情况下运行我的应用程序(这存在技术障碍,例如正确设置PATH等)。

我可以找到有关在Java 10上创建独立Java应用程序的信息,但我找不到有关将Java应用程序与OpenJDK 11和JavaFX捆绑在一起的信息。

如何随 OpenJDK 11 和 JavaFX 一起发布一个独立的 Java 应用程序(其中包括一个 Java 运行时)?


答案 1

Modular Java, jlink, & jpackage

按照这些教程,在从Oracle剥离出来到Gluon之后,在JavaFX的新家中找到这些教程。

您需要使用模块化 Java 编写代码。将 JavaFX 11 作为依赖项添加到项目中。并使用新的链接/打包工具将 JDK 的子集捆绑到应用中。

了解:

不再有 JRE

Oracle不再打算让最终用户安装JRE或JDK。浏览器中的Java小程序Java Web Start应用程序交付都正在逐步淘汰,使最终用户不需要JRE。基于Java的应用程序有望捆绑自己的Java实现。唯一有意识地安装JDK的人将是开发人员和服务器端系统管理员。

重要:

这里有一个流程图,可以帮助您在提供Java 11实现的各种供应商中查找和做出决定。

Flowchart guiding you in choosing a vendor for a Java 11 implementation


Motivations in choosing a vendor for Java


答案 2

您可以将整个 JDK 与应用捆绑在一起,并创建一个批处理脚本来使用捆绑的 JDK 运行您的应用。我知道这种方法会大大增加你的版本,但另一种方法是要求你的用户自己安装JDK,这对于不懂技术的人来说并不容易。或者,您可以发布两个版本,一个捆绑了 JDK,另一个没有。


推荐