web-dev-qa-db-ja.com

javafx 11でjfoenixモジュールを修正する方法

したがって、私は必要な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
8

これを修正する1つの方法は、必要なエクスポートにvmオプションを追加することです。

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

これに対する理想的な解決策は、jfoenixライブラリがcom.Sun.javafx.scene.control.behavior.TabPaneBehaviorを使用しないようにすることです。

5
Naman

これまでのところ、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
2

このすべてのモジュールの痛みの代わりに、JPMSを完全に破棄し、すべてのライブラリ(JavaFXも)をクラスパスに配置してから、次のようなランチャーを介してアプリケーションを起動します。

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