尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类

标签 java javafx compiler-errors javafx-9

我目前正在开发一个使用 javafx 作为 UI 的应用程序。我使用的是java 9。当我从github上拉出来继续在我的新计算机上开发并编译时,所有javafx类的引用都存在编译错误,而且只有javafx类。

我在外部资源中的jdk中搜索了一下,javafx包确实在它应该在的地方。我还使用相同的jdk创建了一个新项目并打开了一个javafx窗口,效果很好。这告诉我这是一个项目特定的问题,而不是系统问题。

有人对此有一些见解吗?谢谢。

编辑 我正在使用 Intellij 社区 Ed。错误列表很广泛,但这里有一些 enter image description here

最佳答案

您的 IDE 可能已将该项目设置为“模块化”Java 9 项目。在模块化项目中,您指定项目依赖哪些其他模块,以及模块中的哪些包应暴露给其他模块。关于模块的一个很好的通用教程位于 OpenJDK wiki

如果类路径根目录中有 module-info.java 文件,您需要明确声明您的模块需要访问适当的 JavaFX 模块。只需添加就足够了

requires javafx.controls ;

到此文件:这将使您能够访问javafx.controls module ,以及它所依赖的模块(javafx.graphicsjavafx.base)。根据您的项目,您可能还需要

requires javafx.fxml ;

和/或

requires javafx.web ;

等等

关于尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853477/

相关文章:

java - 实现 MapChangeListener 的 onChanged - 为什么这个 lambda

c++ - 运算符重载 << 错误

Java JButton - MouseMotionListener ( MouseMoved ) 鼠标悬停效果

java - 如何等待 lambda 表达式完成

java - 如何使用相同的父类(super class)方法初始化不同的子类类型?

java - Travis 构建支持 JavaFx 的 OpenJDK10

mysql - 使用javafx将图像上传到数据库

matlab - MATLAB ERROR Feval需要一个函数句柄作为第一个参数

java - Java解释器和编译器规则冲突

java - 读取 JNLP 中通过 href 标签传递的属性