我正在尝试在其中访问 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 选项中。
但是,无论有没有上述情况,我都会遇到同样的例外。
我可能做错了什么?