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