首页 > 解决方案 > 您如何运行 jlink 为您的 JavaFX 应用程序创建运行时?

问题描述

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

您可以在这里看到 javafx 在我的依赖项中列出:

IntelliJ 依赖项视图

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

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

标签: javafxdeployment

解决方案


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


推荐阅读