首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >包javafx.util不存在

包javafx.util不存在
EN

Stack Overflow用户
提问于 2019-03-14 19:24:04
回答 1查看 54K关注 0票数 12

我正在Mac上运行java版本11.0.2。WHen我编译了一个导入javafx.util.pair的java文件,我得到了一个error: package javafx.util does not exist。没有多少有用的资源来解决这个问题。我在网上尝试了不同的建议,但没有白费。目前,我正在尝试将JavaFX包添加到我的Java目录中。但不起作用。

以下是我所做的:

  1. 下载JavaFXSDK-11.0.2文件夹。在文件夹中,有两个目录-- legal和lib。
  2. legal dir中的项移动到/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/legal
  3. lib dir中的项移动到/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/lib
  4. 重新打开终端以编译此.java文件。

Question_1:我错过了上面的什么吗?

Question_2:如果这种方法是错误的,你会有什么建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-14 19:44:25

javafx.util.Pairjavafx.base 模块的一部分,正如您已经提到的,您需要将JavaFX SDK下载到您的计算机上,因为它不再是JavaFX的一部分。

您可以按照OpenJFX文档介绍如何开始。

一旦您拥有了下载 the SDK,如果您想运行JavaFX 11,您将看到您需要以记录在案的形式执行一些操作。

代码语言:javascript
运行
复制
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.basejavafx.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。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55170520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档