首页 > 解决方案 > Java 的 add-opens 似乎无法使包可访问

问题描述

我正在尝试在其中访问 JavaFX 的包私有类和公共静态方法(javafx.scene.control.skin.TableSkinUtils.resizeColumnToFitContent),以便我可以自动调整 TableView 列的大小。

但是,我使用的是模块系统,因为 JavaFX 11 似乎要求我的应用程序是一个模块。如果我没有为我的应用程序指定一个模块,我会收到这个错误:Error: JavaFX runtime components are missing, and are required to run this application我实际上宁愿根本不使用模块系统,有没有办法?

现在,由于模块系统,在尝试使该方法TableSkinUtils.resizeColumnToFitContent可访问时出现异常:

Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make public static void javafx.scene.control.skin.TableSkinUtils.resizeColumnToFitContent(javafx.scene.control.skin.TableViewSkinBase,javafx.scene.control.TableColumnBase,int) accessible: module javafx.controls does not "opens javafx.scene.control.skin" to module Explorer

因此,我尝试将此解决方法添加--add-opens javafx.controls/javafx.scene.control.skin=ALL-UNNAMED到 Intellij 的运行配置 VM 选项中。

但是,无论有没有上述情况,我都会遇到同样的例外。

我可能做错了什么?

标签: javajavafxjavafx-11

解决方案


推荐阅读