我正在Mac上运行java版本11.0.2。WHen我编译了一个导入javafx.util.pair
的java文件,我得到了一个error: package javafx.util does not exist
。没有多少有用的资源来解决这个问题。我在网上尝试了不同的建议,但没有白费。目前,我正在尝试将JavaFX包添加到我的Java目录中。但不起作用。
以下是我所做的:
legal
dir中的项移动到/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/legal
lib
dir中的项移动到/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib
Question_1:我错过了上面的什么吗?
Question_2:如果这种方法是错误的,你会有什么建议?
发布于 2019-03-14 19:44:25
javafx.util.Pair
是javafx.base
模块的一部分,正如您已经提到的,您需要将JavaFX SDK下载到您的计算机上,因为它不再是JavaFX的一部分。
您可以按照OpenJFX文档介绍如何开始。
一旦您拥有了下载 the 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
这意味着运行Java11并包含来自JavaFX SDK独立位置的模块。注意,javafx.controls
具有javafx.base
和javafx.graphics
模块作为传递依赖项。
但是,您不会在这些文档中看到必须将JavaFX文件复制到JDK中的内容。那不管用。
它不能工作的主要原因是:Java11和JavaFX 11是模块化的,即使在path/to/javafx-sdk-11.0.2/lib
下看到JavaFX jars,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
和--add-modules
参数(至少在JavaFX方面)。
事实上,像这一个这样的发行版已经这样做了。
因此,选项是:使用常规JDK和JavaFX SDK (与--module-path
和--add-modules
一起使用),或者创建/使用包含JavaFX的定制JDK。
https://stackoverflow.com/questions/55170520
复制相似问题