ホームページ >Java >&#&チュートリアル >Java 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」を解決する方法は?
Java 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」の解決
問題の理解
Java 9 では、プラットフォーム モジュール システムが導入され、機能が強化されています。特定の要素へのアクセスを制限することによるカプセル化。これらの制限を回避しようとすると、InaccessibleObjectException がスローされます。エラー メッセージには、アクセスされているメンバー、アクセスを制限しているモジュール、およびアクセスを試行しているモジュールが示されています。
例外の解決
解決策は、問題の原因となるシナリオ。
1. JDK へのリフレクション呼び出し
問題: ライブラリまたはフレームワークは、リフレクションを使用して JDK モジュール内の要素にアクセスします。
解決策: を使用します。リフレクション用に特定のパッケージを開くためのコマンドライン フラグ。
java --add-opens {jdk-module}/{package}={accessing-module}
の場合例:
java --add-opens java.base/java.lang=ALL-UNNAMED
2.アプリケーション コードのリフレクション
問題: アプリケーション モジュール内の要素にアクセスするためにリフレクションが使用されています。
解決策: アプリケーションを変更します。パッケージまたはモジュールを開くためのモジュールの記述子
オプション:
パッケージのエクスポート:
パッケージを特定のモジュールにエクスポートします:
パッケージを開きます:
パッケージを開いて、特定のモジュール:
モジュール全体を開きます:
適切な選択は、必要なアクセスと可視性のレベルによって異なります。
以上がJava 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。