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

Java 9 での「不正なリフレクティブ アクセス」警告を解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-15 03:06:11
オリジナル
564 人が閲覧しました

How Can I Resolve

Java 9 の不正なリフレクティブ アクセス: 詳細な調査

Java 9 では不正なリフレクティブ アクセスの概念が導入され、これにより zahlreichen が引き起こされました。解決方法 このエラーメッセージに関する質問です。この記事では、違法な反射型アクセスの性質、アラートがトリガーされる状況、および考えられる解決策について詳しく説明します。

Java 9 のモジュール システムでは、モジュール性#緩和された強力なカプセル化 の概念が導入されています。これは、不正な反射アクセスを理解するための鍵となります。モジュール内のコードによる他のモジュール コードおよび表示可能なパッケージへのアクセスは、厳密に制御されます。ただし、Java 9 では、モジュールの強力なカプセル化を緩和できます。

ランタイム システムは次の操作を提供できます:

  • 静的アクセス: コンパイルされたバイトコードを通じて提供されます。
  • ランタイム呼び出し: では、すべての名前のないモジュール オープンの コードとして 1 つ以上のモジュールの 1 つ以上のパッケージを使用してランタイム システムを呼び出すことができます。

不正アクセスの概念

次の状況でリフレクション API が正常に呼び出される場合、「不正な」リフレクション アクセスがトリガーされます。

  • 通常、呼び出しは失敗します。
  • ランタイムシステムで「不正アクセス」が有効になっています。

アラートをトリガーするメカニズム

Java 9 のカプセル化の緩和は、新しい起動オプション --illegal-access を使用してコンパイル時に制御できます。デフォルトでは、このオプションは「許可」に設定されています。このモードでは、そのようなパッケージに対する最初の反映されたアクセス操作によってアラートがトリガーされますが、それ以降の警告は発行されません。この警告には、さらに警告を有効にする方法に関する情報が含まれています。

設定オプション

--illegal-access オプションは次のモードで設定できます:

  • debug: print for each suchメッセージとスタック トレースにアクセスします。
  • warn: アクセスごとにメッセージを出力します。
  • deny: このタイプの操作を無効にします。

デバッグと修復の推奨事項

  • --illegal-access=deny を指定してアプリケーションを実行し、( " opens" は、あるモジュールから別のモジュールにパッケージを移動します。これには、そのようなディレクティブのオープンも含まれます。または --add-opens VM 引数を明示的に使用します。
  • コンパイルされたコード内の JDK 内部 API への静的参照を識別するには、--jdk-internals オプションを指定して jdeps ツールを使用します。

警告メッセージの例

不正な反射アクセス操作が検出されたときに発行される警告メッセージは、次の形式に従います:

WARNING: Illegal reflective access by $PERPETRATOR to $VICTIM
ログイン後にコピー

ここで:

  • $PERPETRATOR: リフレクション操作をトリガーするコードを含む型の修飾名、およびコードの利用可能なソース (つまり、 JAR ファイルのパス)。
  • $VICTIM: アクセスされるメンバーを説明する文字列 (囲んでいる型の修飾名を含む)。

予防措置

このような警告を回避し、将来のセキュリティを確保するには、モジュールがこれらの違法な反射アクセスを行わないようにする必要があります。

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

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