ホームページ >Java >&#&チュートリアル >Java 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」を解決する方法は?

Java 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」を解決する方法は?

DDD
DDDオリジナル
2025-01-03 07:58:39782ブラウズ

Java 9's InaccessibleObjectException: How to Resolve

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.アプリケーション コードのリフレクション

問題: アプリケーション モジュール内の要素にアクセスするためにリフレクションが使用されています。

解決策: アプリケーションを変更します。パッケージまたはモジュールを開くためのモジュールの記述子

オプション:

  • パッケージのエクスポート:

    • exports {package}
  • パッケージを特定のモジュールにエクスポートします:

    • exports {package} to {accessing-module}
  • パッケージを開きます:

    • opens {package}
  • パッケージを開いて、特定のモジュール:

    • {package} を {accessing-module} に開きます
  • モジュール全体を開きます:

    • モジュール {開くモジュール} を開く{...}

適切な選択は、必要なアクセスと可視性のレベルによって異なります。

以上がJava 9 の InaccessibleObjectException:「{Member} をアクセス可能にできません」を解決する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。