ホームページ >Java >&#&チュートリアル >Java 9 の InaccessibleObjectException を修正する方法: JDK とアプリケーション コードのソリューション?

Java 9 の InaccessibleObjectException を修正する方法: JDK とアプリケーション コードのソリューション?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 11:30:12389ブラウズ

How to Fix Java 9's InaccessibleObjectException:  JDK and Application Code Solutions?

Java 9 で InaccessibleObjectException を解決する方法

Java 9 を使用している場合、開発者は InaccessibleObjectException に遭遇する可能性があります。これは、Java プラットフォーム モジュール システムの強力なカプセル化の実装が原因で発生します。

例外メッセージの内訳:

Unable to make {member} accessible: module {A} does not "opens {package}" to {B}

例外を引き起こす主なシナリオ:

1. JDK への反射呼び出し

  • {A} は JDK モジュール (例: java.base)
  • {member} および {package} は JDK API
  • {B} はライブラリ/フレームワーク/アプリケーション モジュール (多くの場合、名前のないモジュール) @...)

2.アプリケーション コードの反映

    {A} はアプリケーション モジュール
  • {member} であり、{package} はアプリケーション コード
  • {B} に属していますフレームワーク モジュールまたは名前のないモジュール @...

1。 JDK へのリフレクティブ呼び出しの解決策:

次のコマンドライン フラグを使用して、指定されたパッケージをリフレクション用に開きます:

java --add-opens java.base/java.lang=ALL-UNNAMED
ALL-UNNAMED を指定されたパッケージの名前に置き換えます該当する場合、モジュール。

2.アプリケーション コードのリフレクションの解決策:

モジュール {A} を編集して、モジュール記述子内の次のオプションのいずれかを使用して内部パッケージを開きます:

    exports {package} (パブリックにアクセスできるようにします)
  • は {package} を {B} にエクスポートします (パブリックにアクセスできるようにします) B)
  • {package} を開きます (実行時にすべてのコードにアクセスできるようにします)
  • {package} を {B} に開きます (実行時に B のみにアクセスできるようにします)
  • open module {A} { ... } (実行時にすべてのコードからモジュール全体にアクセスできるようにします)

以上がJava 9 の InaccessibleObjectException を修正する方法: JDK とアプリケーション コードのソリューション?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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