javafx.util.Pair
是javafx.base
模块的一部分,正如您所提到的,您需要将 JavaFX SDK 下载到您的机器上,因为它不再是 Java JDK 的一部分。
您可以按照OpenJFX 文档了解如何开始。
下载SDK 后,如果您想运行 JavaFX 11,您将看到您需要按照文档说明进行操作:
export PATH_TO_FX=path/to/javafx-sdk-11.0.2/lib
javac --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX.java
java --module-path $PATH_TO_FX --add-modules=javafx.controls HelloFX
这意味着您运行 Java 11 并包含来自 JavaFX SDK 独立位置的模块。请注意,和模块javafx.controls
具有传递依赖关系。javafx.base
javafx.graphics
但是,您不会阅读那些必须将 JavaFX 文件复制到 JDK 的文档。那是行不通的。
不起作用的主要原因:Java 11 和 JavaFX 11 是模块化的,即使你看到 下的 JavaFX jars path/to/javafx-sdk-11.0.2/lib
,JDK 使用一个大文件:/path/to/jdk-11.0.2.jdk/Contents/Home/lib/modules
来运行java
命令。该文件是在构建 JDK 时创建的,因此向其中添加任何 jar 都不会产生任何影响。
选择
但是,您会在文档中找到将 JavaFX SDK“复制”到 JDK中的正确方法:通过创建新的自定义映像。请参阅链接部分Custom JDK+JavaFX image
。
您可以使用jlink
创建包含部分或全部 JavaFX 模块的运行时映像,而无需附加到给定项目。
因此,您可以创建一个组合映像 Java11+JavaFX11,并将其用作您的新 JDK。这将允许您摆脱--module-path
and--add-modules
参数(至少在 JavaFX 方面)。
事实上,像这样的一些发行版已经这样做了。
所以选项是:您使用常规 JDK 和 JavaFX SDK(带有--module-path
和--add-modules
)或者您创建/使用包含 JavaFX 的自定义 JDK。