Java 9 での InaccessibleObjectException への対処: メンバーをアクセス可能にできない
Java プラットフォーム モジュール システムの厳密なカプセル化が原因で Java 9 で InaccessibleObjectException が発生する、公開可視性やパッケージなどの特定の条件下でのみアクセスを許可します。
原因とシナリオ
この例外は通常、次の場合に発生します。
解決ケース 1: 反射的な呼び出しJDK
JDK モジュールは不変であるため、解決策はリフレクション用にパッケージを開くコマンドライン フラグにあります。たとえば、例外を解決するには:
java --add-opens java.base/java.lang=ALL-UNNAMED
ケース 2: アプリケーション コードのリフレクション
リフレクション コードが編集可能なモジュール内にある場合は、そのコードを強化することを検討してください。モジュール記述子:
その他の解決策
Java 9 のみで、次のコマンドを使用してカプセル化保護を無効にできます。
java --permit-illegal-access
注: セキュリティへの影響のため、このフラグは慎重に使用する必要があります。モジュール構成とベスト プラクティスの詳細については、リンクされたリソースを参照してください。
以上がJava 9 の InaccessibleObjectException: リフレクションとモジュール システムの競合を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。