13.1 現象
JDK9では,Java Module Systemの考え方を導入し,内部API(フィールドアクセスを含む)のカプセル化によって,Javaプログラム実行環境の安全性を高めています。
JDK9とJDK8以前との互換性については,内部APIやフィールドに対するアクセスを可能とする手段として,--add-opensなどのオプションを用意しています。試行錯誤的な方法で,必要最小限の場所を指定できます。そのため,互換性を維持しながら,安全性を保った実行環境を実現しています。この仕様や考え方など,JDK9の詳細については次のOracle社のページをご参照ください。
-
Oracle JDK9ドキュメント
https://docs.oracle.com/javase/jp/9/
-
Java Platform, Standard Edition Oracle JDK 9移行ガイド:JDK9への移行
https://docs.oracle.com/javase/jp/9/migrate/toc.htm#JSMIG-GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6
このページにある「ランタイム・アクセス警告の理解」の部分を参照してください。
JDK9で導入されたJava Module Systemの影響によって,JDK8以前でコンパイルまたは実行できていたRMI-IIOPアプリケーションを,JDK9以降でコンパイルまたは実行しようとした場合,アプリケーションの実装によって次の現象が発生することがあります。
項番 |
現象が発生する契機 |
現象 |
---|---|---|
1 |
コンパイル時 |
java2iiopコマンド実行時に,次のメッセージが標準エラー出力に出力されます。クライアントスタブやサーバスケルトンなどの生成に失敗します。 java2iiop: fatal error: internal problem; please contact Inprise Customer Support |
2 |
実行時 |
リクエストコールで,java.lang.reflect.InaccessibleObjectException例外が発生します。 |