12.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と同じです。