ホームページ > Java > &#&チュートリアル > Java 9 の不正なリフレクティブ アクセス: 警告を特定、トリガー、解決するにはどうすればよいですか?

Java 9 の不正なリフレクティブ アクセス: 警告を特定、トリガー、解決するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-18 17:59:14
オリジナル
459 人が閲覧しました

Java 9's Illegal Reflective Access: How to Identify, Trigger, and Resolve Warnings?

Java 9 の不正なリフレクティブ アクセスについて

Java 9 の不正なリフレクティブ アクセスとは、Java 9 で導入されたモジュールのカプセル化原則に違反する特定のリフレクション操作を指します。このバージョン。リフレクティブ アクセスを使用すると、プログラムは、可視性修飾子に関係なく、他のクラスのメンバーに動的にアクセスできます。

不正なリフレクティブ アクセスとは何ですか?

不正なリフレクティブ アクセスは、次の場合に発生します。

  • モジュールが、明示的に宣言されていない別のモジュールのメンバーにアクセスしようとしました
  • モジュールは、リフレクション API を使用して、モジュールのコードにアクセスできないコンストラクター、フィールド、またはメソッドを呼び出します。

どのように違法ですかリフレクティブ アクセスがトリガーされました?

Java 9 ランタイムはリフレクション操作を監視します。不正アクセスを検知した場合は警告メッセージを発行します。この警告は、次のいずれかのモードで --illegal-access JVM 引数を手動で指定することで抑制できます:

  • permit: 最初の不正なアクセスに対して警告を発行し、沈黙します。
  • warn: すべての違法に対して警告を発行します。 access.
  • deny: すべての不正な反射操作を無効にします。

警告をトリガーするシナリオ

不正な反射型アクセス警告は、次の条件が該当する場合にトリガーされます。 met:

  • --illegal-access JVM 引数は許可または警告に設定されています。
  • モジュールが、オープンされていない別のモジュールのメンバーにアクセスしようとしています。
  • リフレクション アクセスは、コンパイルされたコードからの静的参照を介して、またはリフレクションを使用して発生します。 API.

不正なリフレクティブ アクセスの解決

不正なリフレクティブ アクセスの警告を回避するには、次の手順を検討してください。

  • 次のことを確認してください。すべてのモジュールは依存関係を宣言し、相互にパッケージを開きます。必要です。
  • モジュール間のパッケージを明示的に開くには --add-opens VM 引数を使用します。
  • コンパイルされたコードから JDK 内部 API への静的参照を削除します。
  • --illegal-access 不正なリフレクション操作を無効にし、強力なカプセル化を強制することを拒否する JVM 引数。

以上がJava 9 の不正なリフレクティブ アクセス: 警告を特定、トリガー、解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート