如何运行jlink为JavaFX应用程序创建运行时?
背景故事: 我正试图将我的openJDK11、openJFX应用程序分发给我的朋友。 我正在使用本教程: 您可以在这里看到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
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,还有一个非常方便的方法。