我目前正在开发一个使用 javafx 作为其 UI 的应用程序。我正在使用 java 9。当我从 github 拉出以在我的新计算机上继续开发并编译时,javafx 类的所有引用都存在编译错误,并且只有 javafx 类。
我在外部资源的jdk中搜索,javafx包确实是它应该在的地方。我还使用相同的 jdk 创建了一个新项目并打开了一个 javafx 窗口,它运行良好。这告诉我这是一个特定于项目的问题,而不是系统问题。
有没有人对此有所了解?谢谢。
我目前正在开发一个使用 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
模块,以及它所依赖的模块(javafx.graphics
和javafx.base
)。根据您的项目,您可能还需要
requires javafx.fxml ;
和/或
requires javafx.web ;
等等