我目前正在开发一个使用 javafx 作为 UI 的应用程序。我使用的是java 9。当我从github上拉出来继续在我的新计算机上开发并编译时,所有javafx类的引用都存在编译错误,而且只有javafx类。
我在外部资源中的jdk中搜索了一下,javafx包确实在它应该在的地方。我还使用相同的jdk创建了一个新项目并打开了一个javafx窗口,效果很好。这告诉我这是一个项目特定的问题,而不是系统问题。
有人对此有一些见解吗?谢谢。
最佳答案
您的 IDE 可能已将该项目设置为“模块化”Java 9 项目。在模块化项目中,您指定项目依赖哪些其他模块,以及模块中的哪些包应暴露给其他模块。关于模块的一个很好的通用教程位于 OpenJDK wiki 。
如果类路径根目录中有 module-info.java
文件,您需要明确声明您的模块需要访问适当的 JavaFX 模块。只需添加就足够了
requires javafx.controls ;
到此文件:这将使您能够访问javafx.controls
module ,以及它所依赖的模块(javafx.graphics
和 javafx.base
)。根据您的项目,您可能还需要
requires javafx.fxml ;
和/或
requires javafx.web ;
等等
关于尽管 JavaFx 类存在于 JDK 中,但 Java 无法找到 JavaFx 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48853477/