13.2 コンパイル時の対応
java2iiopコマンド実行時に,次のメッセージが標準エラー出力に出力された場合,クライアントスタブやサーバスケルトンなどの生成に失敗します。
java2iiop: fatal error: internal problem; please contact Inprise Customer Support
次の手順に従ってください。
-
java2iiopコマンドを-XXX_debugオプションを付けて実行してください。
(例)
> java2iiop -XXX_debug HelloRemote
-
java.lang.reflect.InaccessibleObjectException例外のメッセージが,標準エラー出力に出力されます。例外メッセージからモジュール名とパッケージ名を見つけてください。
(例外メッセージの例)
java2iiop: fatal error: internal problem: unexpected exception: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.List aaa.bbb.Ccc.ddd accessible: module xxx.yyy does not "opens aaa.bbb" to unnamed module @735b478
- モジュール名とパッケージ名は,メッセージ中の「accessible: module」の直後に以下の形式で出力されています。
-
accessible: module モジュール名
does not "opens パッケージ名"
例外メッセージの例の場合,モジュール名は「xxx.yyy」,パッケージ名は「aaa.bbb」となります。
-
手順2.で見つけたモジュール名とパッケージ名を--add-opensオプションに指定して,java2iiopコマンドを実行してください。
(例)
> java2iiop -J--add-opens=xxx.yyy/aaa.bbb=ALL-UNNAMED -XXX_debug HelloRemote
-
java.lang.reflect.InaccessibleObjectException例外が発生しなくなるまで,手順2.〜手順3.を繰り返して--add-opensオプションをjava2iiopコマンドに追加してください。
(例)
> java2iiop -J--add-opens=xxx.yyy/aaa.bbb=ALL-UNNAMED -J--add-opens=xxx.yyy/ccc.ddd=ALL-UNNAMED -XXX_debug HelloRemote
-
java.lang.reflect.InaccessibleObjectException例外が発生しなくなった場合,java2iiopコマンドから-XXX_debugオプションの指定を削除してください。