【问题标题】:running JavaFX application after jpackage在 jpackage 之后运行 JavaFX 应用程序
【发布时间】:2020-08-01 06:57:27
【问题描述】:

我有一些非常菜鸟的问题。 我尝试在 OpenJDK 14 中使用 jpackage 为我的测试应用程序创建安装。这是我所做的:

首先,使用

创建自定义 JRE
jlink --module-path "C:\Java\javafx-sdk-14\lib" --add-modules javafx.controls,javafx.fxml --output hello\myjre

这是成功的。我从运行配置中复制了我的 Eclipse 中的参数。之后使用 jpackage 进行安装

jpackage --name HelloFX --input hello --main-jar HelloFX.jar --runtime-image hello\myjre

创建 .msi 文件,我运行它并在我的 Win10 应用程序中创建条目。当然,我不知道如何在 windows 菜单中找到它,但它位于我的 C:\Program Files\HelloFX 中。当我尝试运行应用程序时弹出“无法启动 JVM”消息,我找到了带有 Duke 图像的图标和应用程序文件。

谁能帮帮我,我做错了什么?我真的很想完成这项工作并深入研究 JavaFX。

【问题讨论】:

    标签: javafx java-14 jpackage


    【解决方案1】:

    JavaFX SDK 中包含的 JavaFX JAR 不包含本机代码。相反,所述代码位于bin 目录中。这意味着jlink 创建的自定义运行时映像没有运行 JavaFX 所需的本机代码。你有两个选择:

    1. 下载 JMOD 文件 from Gluon 并在创建自定义运行时映像时使用这些文件。您可以将 JMOD 文件放在 --module-path 而不是常规 JAR 文件中。

      • 请注意,获取 JMOD 文件的另一种方法是使用包含 JavaFX 的 JDK 发行版。 Oracle 可能不再提供此类发行版,但其他分销商仍提供它们(例如 Azul Zulu、BellSoft Liberica 等)。如果您有一个包含 JavaFX 的 JDK,那么您不需要将 JavaFX 放在 --module-path 上,只需确保在打包和执行期间解析 JavaFX 模块(通过 requires 指令或 --add-modules 参数)。
    2. 使用发布到 Maven Central 而不是 SDK 的 JavaFX JAR。 Maven Central JAR 嵌入了本机代码。

    在这两种情况下,请确保为您的操作系统使用 JMOD/JAR 文件 - JavaFX 是特定于平台的。

    我相信第一个选项是最好的。当使用带有jlink 的 JMOD 文件时,本机代码包含在自定义运行时映像中,其方式与特定于 JRE 的本机代码相同。如果您使用第二种方法,本机代码仍将包含在自定义运行时映像中,但必须先将其提取到您计算机上的某个位置(例如 <user-home>/.openjfx),然后才能使用它1 .换句话说,第一个选项更干净。


    1.请注意,此提取是由 JavaFX 自动完成的。

    【讨论】:

    • --module-path添加JavaFX JMOD目录时,还需要在--module-path添加JavaFX SDK吗?
    • 在使用 jlink 和/或 jpackage 时不会。
    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-03
    • 2021-06-05
    • 2021-06-26
    • 1970-01-01
    相关资源
    最近更新 更多