背景故事: 我正在尝试将我的openJDK11,openJFX应用程序分发给我的朋友。 我正在使用本教程: https://medium.com/azulsystems/using-jlink-to-build-java-runtimes-for-non-modular-applications-9568c5e70ef4
您可以在此处看到我的依赖项中列出了javafx:
您可以在此处看到我的模块信息已设置为运行该应用程序可能需要:
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
答案 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