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

如何运行jlink为JavaFX应用程序创建运行时?,javafx,deployment,Javafx,Deployment,背景故事: 我正试图将我的openJDK11、openJFX应用程序分发给我的朋友。 我正在使用本教程: 您可以在这里看到javafx列在我的依赖项中: 您可以在此处看到,我的模块信息已设置为运行应用程序可能需要的信息: module FractalFriend_m { requires javafx.base; requires javafx.controls; requires javafx.fxml; requires javafx.graphics

背景故事: 我正试图将我的openJDK11、openJFX应用程序分发给我的朋友。 我正在使用本教程:

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

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

module FractalFriend_m {


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

    opens com.potatospy;


}
您可以在此处看到我的虚拟机选项输入正确:

--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
其结果是:

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

错误:未找到模块javafx.base

应单独下载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

jlink——没有头文件——没有手册页——compress=2——strip debug-p——添加模块javafx.controls、javafx.fxml、javafx.base、javafx.graphics——输出java运行时

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

jlink——没有头文件——没有手册页——compress=2——strip debug-p——添加模块javafx.controls、javafx.fxml、javafx.base、javafx.graphics——输出java运行时

选项应该是
--output
(两个破折号)。@Slaw非常感谢。我正在更新我的结果。“错误:找不到模块javafx.base”您没有指定模块路径(
-p
--模块路径
)。注意,对于
jlink
您应该指向JMOD文件,因为它们包含本机代码。@Slaw Lord我甚至不知道JMOD是什么要求包含几个使用
jlink
创建自定义运行时的用例。如果您使用Gradle,也有一个非常方便的选项。选项应该是
--output
(两个破折号)。@Slaw非常感谢。我正在更新我的结果。“错误:找不到模块javafx.base”您没有指定模块路径(
-p
--模块路径
)。注意,对于
jlink
您应该指向JMOD文件,因为它们包含本机代码。@Slaw Lord我甚至不知道JMOD是什么要求包含几个使用
jlink
创建自定义运行时的用例。如果你使用Gradle,还有一个非常方便的方法。