如何使用JavaFX11修复jfoenix模块

如何使用JavaFX11修复jfoenix模块,java,javafx,java-11,java-module,jfoenix,Java,Javafx,Java 11,Java Module,Jfoenix,因此,我添加了对module-info.java的需求,并最终获得了要加载的程序,但一旦tab pane想要从jfoenix库加载,就会抛出此错误 Caused by: java.lang.IllegalAccessError: class com.jfoenix.skins.JFXTabPaneSkin (in module com.jfoenix) cannot access class com.sun.javafx.scene.control.behavior.TabPaneBehavio

因此,我添加了对module-info.java的需求,并最终获得了要加载的程序,但一旦tab pane想要从jfoenix库加载,就会抛出此错误

Caused by: java.lang.IllegalAccessError: class com.jfoenix.skins.JFXTabPaneSkin (in module com.jfoenix) cannot access class com.sun.javafx.scene.control.behavior.TabPaneBehavior (in module javafx.controls) because module javafx.controls does not export com.sun.javafx.scene.control.behavior to module com.jfoenix

您可以尝试解决此问题的一种方法是为所需的导出添加vm选项:

--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix

理想的解决方案是使用
jfoenix
库,不再使用
com.sun.javafx.scene.control.behavior.TabPaneBehavior

到目前为止,我能够成功地运行jfoenix库的各个方面。我仍然需要在我的应用程序中进行一些测试,以确保没有隐藏错误,但目前以下VM选项修复了该问题:

--add-exports javafx.controls/com.sun.javafx.scene.control.behavior=com.jfoenix
--add-exports javafx.controls/com.sun.javafx.scene.control=com.jfoenix
--add-exports javafx.base/com.sun.javafx.binding=com.jfoenix
--add-exports javafx.graphics/com.sun.javafx.stage=com.jfoenix
--add-exports javafx.base/com.sun.javafx.event=com.jfoenix

所有这些模块痛苦的替代方法是完全放弃JPMS,将所有库(也是JavaFX)放在类路径上,然后通过如下启动器启动应用程序:

class MyAppLauncher {public static void main(String[] args) {MyApp.main(args);}}

我添加了vm选项,现在出现的问题是:java.lang.IllegalAccessError:class com.jfoenix.skins.JFXTabPaneSkin$TabHeaderContainer(在模块com.jfoenix中)无法访问class com.sun.javafx.scene.control.LambdaMultiplePropertyChangeListenerHandler(在模块javafx.controls中)因为模块javafx.controls没有将com.sun.javafx.scene.control导出到模块com.jfoenix,如果我在项目中使用module-info.java,是否可以这样做?各位,如果仍然出现错误,请尝试添加此
--add opens java.base/java.lang.reflect=com.jfoenix