问题描述
在idea
中创建了一个JavaFX项目,运行代码时出现如下报错信息:
class com.sun.javafx.application.LauncherImpl (in module javafx.graphics) cannot access class com.example.demo.Main (in module com.example.javafxtest) because module com.example.javafxtest does not export com.example.demo to module javafx.graphics
解决方案
这个异常是因为模块间的访问限制导致的。在Java 9及以上版本中,模块化成为了标准,模块之间默认是不互相可见的。因此,在我的代码中,可能是因为 com.example.demo.Main 所在的模块 com.example.javafxtest 没有将 com.example.demo 模块导出给 javafx.graphics 模块,所以 javafx.graphics 无法访问 Main 类。
可以尝试将 com.example.demo 模块导出给 javafx.graphics 模块,方法是在 com.example.javafxtest 模块的 module-info.java 文件中添加如下代码:
exports com.example.demo to javafx.graphics;
类似报错
module javafx.fxml cannot access class com.example.demo.Controller (in module com.example.javafxtest) because module com.example.javafxtest does not open com.example.demo to javafx.fxml
出现这个错误也是因为模块间的访问受限,高亮部分就是原因,解决办法是在 com.example.javafxtest 模块的 module-info.java 文件中添加如下代码:
opens com.example.demo to javafx.fxml;