13.4 スキーマ・オブジェクトのコンパイル
ソース・ファイルをロードすると、Javaソース・スキーマ・オブジェクトが作成または更新され、そのソースから以前に導出されたクラス・スキーマ・オブジェクトが無効になります。クラス・スキーマ・オブジェクトが存在しない場合は、loadjava
ツールによって作成されます。古いクラス・スキーマ・オブジェクトは新しくロードしたソースからコンパイルされていないため、loadjava
は古いクラス・スキーマ・オブジェクトを無効にします。新しくロードしたソース(たとえば、クラスA
)のコンパイルは、次のいずれかの条件で自動的に実行されます。
-
リゾルバが、クラス
B
の処理時に、クラスB
の参照先がクラスA
であり、クラスA
が無効であることを検出した場合。 -
コンパイラが、クラス
B
のソースのコンパイル時に、クラスB
の参照先がクラスA
であり、クラスA
が無効であることを検出した場合。 -
クラス・ローダーが、実行対象のクラス
A
のロード時に、クラスA
が無効であることを検出した場合。
ソース・ファイルのロード時に強制的にコンパイルするには、loadjava -resolve
オプションを使用します。
コンパイラはエラー・メッセージを事前定義のUSER_ERRORS
ビューに書き込みます。つまり、loadjava
ツールは、コンパイラの起動によって作成されたメッセージを取得して表示します。
コンパイラはいくつかのオプションを認識します。コンパイラにオプションを指定するには、次の2つの方法があります。-resolve
オプションを指定してloadjava
ツールを実行した場合は、コマンドラインでコンパイラ・オプションを指定できます。さらに、スキーマごとのデータベース表JAVA$OPTIONS
に永続的なコンパイラ・オプションを指定できます。JAVA$OPTIONS
表は、loadjava
ツールのオプションを使用して選択的にオーバーライドできる、デフォルトのコンパイラ・オプションに使用できます。
注意:
コマンドライン・オプションによって、JAVA$OPTIONS
表内の一致しているエントリがオーバーライドおよび消去されます。
JAVA$OPTIONS
の行には、オプションの設定を適用するソース・スキーマ・オブジェクトの名前が指定されています。複数行を使用すると、ソース・スキーマ・オブジェクトごとに異なるオプションを設定できます。クラス・ローダーによってコンパイラをコールするか、またはコマンドラインでオプションを指定せずにコンパイラをコールすると、コンパイラはJAVA$OPTIONS
でオプションを検索します。コンパイル対象のソース・スキーマ・オブジェクトにJAVA$OPTIONS
表のエントリもコマンドラインのオプション値もない場合、コンパイラは次のデフォルト値を使用します。
-
encoding = System.getProperty("file.encoding");
-
online = true
このオプションは、SQLJ構文が含まれているJavaソースにのみ適用されます。
-
debug = true
このオプションは
javac -g
と同じです。