Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to fix jfoenix modules with javafx 11

So I'm adding my requires for module-info.java and finally got my program to load but as soon as tab pane wants to load from jfoenix library this error is thrown.

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
like image 463
exceptionsAreBad Avatar asked Oct 29 '18 00:10

exceptionsAreBad


3 Answers

One way you can try fixing this is by adding the vm option for the required export:

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

The ideal solution to that would be the jfoenix library to move away from using com.sun.javafx.scene.control.behavior.TabPaneBehavior.

like image 105
Naman Avatar answered Oct 16 '22 15:10

Naman


I was able to successfully run every aspect of the jfoenix library thus far. I still have some testing to do in my application to make sure there are no errors hidden but at this moment the following VM options fixed the issue :

--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
like image 3
exceptionsAreBad Avatar answered Oct 16 '22 15:10

exceptionsAreBad


An alternative to all this module pain is to completely abandon the JPMS and put all libraries (also JavaFX) on the classpath and then start your application via a launcher like this:

class MyAppLauncher {public static void main(String[] args) {MyApp.main(args);}}
like image 1
mipa Avatar answered Oct 16 '22 14:10

mipa