java - 包 javafx.util 不存在

标签 java javafx java-11 javafx-11

我在 Mac 上运行 Java 版本 11.0.2。当我编译一个导入 javafx.util.pair 的 java 文件时,我得到了一个错误:包 javafx.util 不存在。解决这个问题的有用资源不多。我在网上尝试了不同的建议,但没有成功。目前我正在尝试将 JavaFX 包添加到我的 Java 目录中。但它不起作用。

这是我做的:

  1. 已下载 javafx-sdk-11.0.2 文件夹。在文件夹内,有 2 个目录 - legal 和 lib

  2. legal 目录中的项目移动到 /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/legal

  3. lib 目录中的项目移动到 /Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib

  4. 重新打开终端以编译此 .java 文件。

问题_1:我是否遗漏了以上内容?

问题_2:如果这种方法是错误的,你有什么建议?

最佳答案

javafx.util.Pairjavafx.base module 的一部分,正如您所提到的,您需要将 JavaFX SDK 下载到您的机器上,因为它不再是 Java JDK 的一部分。

可以关注OpenJFX docs关于如何开始。

一旦你有downloaded SDK,如果你想运行 JavaFX 11,你会看到你需要做一些事情 documented :

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.basejavafx.graphics 模块。

但是,您不会在那些文档中读到必须将 JavaFX 文件复制到 JDK 中。那是行不通的。

它不起作用的主要原因:Java 11 和 JavaFX 11 是模块化的,即使您在 path/to/javafx-sdk-11.0.2/lib 下看到 JavaFX jar ,JDK使用一个大文件:/path/to/jdk-11.0.2.jdk/Contents/Home/lib/modules来运行java命令。该文件是在构建 JDK 时创建的,因此向其中添加任何 jar 都不会产生任何影响。

备选

但是,您会在文档中找到将 JavaFX SDK“复制”到 JDK 中的正确方法:创建新的自定义图像。查看link , Custom JDK+JavaFX image 部分。

You can use jlink to create a runtime image that includes some or all the JavaFX modules, without being attached to a given project.

因此您可以创建一个组合图像 Java11+JavaFX11,并将其用作您的新 JDK。这将允许您摆脱 --module-path--add-modules 参数(至少在 JavaFX 方面)。

事实上,一些发行版如 this one已经这样做了。

所以选项是:您使用常规 JDK​​ 和 JavaFX SDK(使用 --module-path--add-modules)或者您创建/使用包含 JavaFX 的自定义 JDK。

关于java - 包 javafx.util 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170520/

相关文章:

java - 简单应用程序停顿/缓慢的 react 流 TCK(技术兼容性套件)测试将无法运行

java - SimpleDateFormat .format() 在 Java 8 和 Java 11 中给出不同的结果

JavaFX 警报 - 删除标题栏图标?

java - 带有 JDK 11 的 TOMCAT 7.0.92 :- ERROR localhost-startStop-1 org. apache.catalina.startup.ContextConfig - 无法处理 Jar tools.jar 的注释

java - Spring 一号的 BOF

java - 迭代 ClassLoader.getResources() 的结果时出现奇怪的 NPE

java - Jenkins:构建步骤的条件触发器

java - 优化大表上的 MySQL 查询

java - 未捆绑 JRE 的 Mac 和 Windows 打包 Jar 文件

javafx 2 媒体异常 : MEDIA_UNAVAILABLE won't load file