ホームページ >Java >&#&チュートリアル >Java 9 の InaccessibleObjectException:「{member} をアクセス可能にできません」を解決するにはどうすればよいですか?
Java 9 での InaccessibleObjectException への取り組み: 「{member} をアクセス可能にできません: モジュール {A} は {B} に対して「{package} を開きません」
Java 9 では、プラットフォーム モジュール システムの導入により、より厳密なカプセル化が行われました。このカプセル化された世界では、特に Spring、Hibernate、JAXB などのライブラリのコンテキストで、恐ろしい InaccessibleObjectException がスローされることがあります。
例外の背後にある原因: この例外は、特定のメンバー (メソッド/フィールド/クラス) は、モジュール システムの制限によりアクセスが制限されています。これらの制限では通常、メンバーがパブリックであるか、そのパッケージがエクスポートされる必要があります。リフレクションは、これらのアクセス制御をバイパスしようとするため、別の課題の層を追加します。
例外への対処: 例外を回避するには、モジュール システムが制限された要素へのアクセスを許可することを確認する必要があります。 。さまざまなシナリオでこれにアプローチする方法は次のとおりです。
シナリオ 1: JDK へのリフレクティブ呼び出し
ライブラリ/フレームワークがリフレクションを介して JDK モジュールを呼び出すときに例外が発生します。ここでは、JDK モジュールを変更できないため、コマンド ライン フラグが機能します。
解決策:
例:
シナリオ 2: アプリケーション コードのリフレクション
この場合、リフレクションあるモジュール内で別のモジュールにアクセスするために使用されます。開発者は、ここでアクセスされるモジュールをより詳細に制御できます。
解決策:
アクセスされたモジュールのモジュール記述子を変更します ( {A}) から:
以上がJava 9 の InaccessibleObjectException:「{member} をアクセス可能にできません」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。