如何运行jlink为JavaFX应用程序创建运行时?

时间:2019-02-20 01:18:01

标签: javafx deployment

背景故事: 我正在尝试将我的openJDK11,openJFX应用程序分发给我的朋友。 我正在使用本教程: https://medium.com/azulsystems/using-jlink-to-build-java-runtimes-for-non-modular-applications-9568c5e70ef4

您可以在此处看到我的依赖项中列出了javafx:

IntelliJ dependencies view

您可以在此处看到我的模块信息已设置为运行该应用程序可能需要:

module FractalFriend_m {


    requires javafx.base;
    requires javafx.controls;
    requires javafx.fxml;
    requires javafx.graphics;

    opens com.potatospy;


}

您可以在此处看到我的VM选项输入正确:

--module-path=C:\Users\USERNAME\Documents\javafx-sdk-11.0.2\lib --add-modules=javafx.controls,javafx.fxml,javafx.base,javafx.graphics

运行:

jdeps --module-path C:\Users\USERNAME\Documents\javafx-sdk-11.0.2\lib --list-deps FractalFriend_m.jar

结果:

 java.base
   javafx.base
   javafx.controls
   javafx.fxml
   javafx.graphics

最后,我运行jlink希望产生任何人都可以运行的东西:

jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics --output java-runtime

这将导致:

错误:找不到模块javafx.base

1 个答案:

答案 0 :(得分:0)

JavaFX应该单独下载,并且在调用jlink时,应该使用-p(--module-path)参数指定。

jlink --no-header-files --no-man-pages --compress=2 --strip-debug -p <path_java_fx_sdk_lib> --add-modules javafx.controls,javafx.fxml,javafx.base,javafx.graphics  --output java-runtime