在jpackage之后运行JavaFX应用程序

在jpackage之后运行JavaFX应用程序,javafx,java-14,jpackage,Javafx,Java 14,Jpackage,我有一些很难回答的问题。 我尝试在OpenJDK 14中使用jpackage为我的测试应用程序创建安装。以下是我所做的: 首先,使用 jlink --module-path "C:\Java\javafx-sdk-14\lib" --add-modules javafx.controls,javafx.fxml --output hello\myjre 这是成功的。我从运行配置中复制了Eclipse中的参数。之后,使用jpackage进行安装 jpackage --name HelloFX -

我有一些很难回答的问题。 我尝试在OpenJDK 14中使用jpackage为我的测试应用程序创建安装。以下是我所做的:

首先,使用

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中。当我试图运行应用程序meesage时,我找到了带有Duke映像的图标和应用程序文件,弹出“未能启动JVM”


谁能帮帮我,我做错了什么?我真的很想让这一点发挥作用,深入研究JavaFX。

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

  • 下载JMOD文件,并在创建自定义运行时映像时使用这些文件。您可以将JMOD文件放在
    --模块路径上,而不是放在常规JAR文件上

  • 使用发布到Maven Central的JavaFX JAR,而不是SDK。Maven Central JAR嵌入本机代码

  • 在这两种情况下,确保操作系统的JMOD/JAR文件是特定于平台的

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



    一,。注意,此提取由JavaFX自动完成。

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

  • 下载JMOD文件,并在创建自定义运行时映像时使用这些文件。您可以将JMOD文件放在
    --模块路径上,而不是放在常规JAR文件上

  • 使用发布到Maven Central的JavaFX JAR,而不是SDK。Maven Central JAR嵌入本机代码

  • 在这两种情况下,确保操作系统的JMOD/JAR文件是特定于平台的

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


    一,。注意,此提取由JavaFX自动完成