したがって、私は必要なmodule-info.Javaを追加し、最終的にプログラムをロードしましたが、タブペインが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
これを修正する1つの方法は、必要なエクスポートに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);}}