Java クラスパス

Java™ 仮想マシンは、実行時にクラスを検索するために、Java クラスパスを使用します。また、Java のコマンドとツールも、クラスパスを使用してクラスの位置を判別します。 デフォルトのシステム・クラスパス、CLASSPATH 環境変数、および classpath コマンド・パラメーターはすべて、クラスを探すときにどのディレクトリーを検索するかを指定するために使用されます。

ロードされる拡張のクラスパスが java.ext.dirs プロパティーによって決定されます。詳しくは、Java の拡張機能をインストールするを参照してください。

デフォルトのブートストラップ・クラスパスはシステムによって定義されており、変更できません。 サーバーでは、IBM® Developer Kit for Java、および他のシステム・クラスに属するクラスをどこで検索するかを、デフォルトのブートストラップ・クラスパスによって指定します。

java.endorsed.dirs プロパティーは、JAR ファイルをブートストラップ・クラスパスに追加することによって、推奨されたバージョンの Java クラスをオーバーライドする標準的な方法です。Java の推奨される標準オーバーライド・メカニズム (英語)Information Center 外へのリンク を参照してください。

これら以外のクラスをシステム上で検出するには、CLASSPATH 環境変数または classpath パラメーターを使用して、検索対象のクラスパスを指定します。 ツールやコマンドで classpath パラメーターを使用すると、CLASSPATH 環境変数で指定されている値は無効になります。

CLASSPATH 環境変数の設定には、「環境変数の処理 (WRKENVVAR)」コマンドを使用します。 WRKENVVAR の画面から、CLASSPATH 環境変数の追加や変更を行うことができます。 CLASSPATH 環境変数を追加する場合は「環境変数の追加 (ADDENVVAR)」コマンドを、CLASSPATH 環境変数を変更する場合は「環境変数の変更 (CHGENVVAR)」コマンドを使用します。

CLASSPATH 環境変数の値はパス名のリストであり、コロン (:) によって分けられています。 これは、特定のクラスを探すために検索されます。 パス名は、0 または複数の一連のディレクトリー名です。 これらのディレクトリー名の後には、ディレクトリーの名前、ZIP ファイル、または JAR ファイル (統合ファイル・システムで検索する) が続きます。 パス名のコンポーネントはスラッシュ (/) 文字によって分けられています。 ピリオド (.) を使用して、現行作業ディレクトリーを示します。

Qshell インタープリターで使用可能なエクスポート・ユーティリティーを使用すると、Qshell 環境で CLASSPATH 変数を設定できます。

これらのコマンドは、CLASSPATH 変数をユーザーの Qshell 環境に追加し、それを値 ".:/myclasses.zip:/Product/classes" に設定します。

J2SE は最初にブートストラップ・クラスパスを検索してから、次に拡張ディレクトリーを検索し、その後クラスパスを検索します。 上記の例のコードでの J2SE の検索順序は次のようになります。

  1. sun.boot.class.path プロパティーのブートストラップ・クラスパス
  2. java.ext.dirs プロパティーの拡張ディレクトリー
  3. 現行作業ディレクトリー
  4. 「ルート」(/) ファイル・システムにある myclasses.zip ファイル
  5. 「ルート」(/) ファイル・システムにある、プロダクト・ディレクトリーにあるクラス・ディレクトリー

Java のツールおよびコマンドの中には、パス名のリストを指定できるクラスパス・パラメーターを含むものがあります。パラメーターの構文は CLASSPATH 環境変数の構文と同じです。 以下のリストは、クラスパス・パラメーターを指定できるツールおよびコマンドの一部を示しています。

これらのコマンドの詳細については、Java コマンドおよびツールを参照してください。 これらのコマンドやツールで classpath パラメーターを使用すると、CLASSPATH 環境変数は無視されます。

CLASSPATH 環境変数をオーバーライドするには、java.class.path プロパティーを使用します。 他のプロパティーと同様に、java.class.path プロパティーを変更するには、SystemDefault.properties ファイルを使用します。 SystemDefault.properties ファイルの値は、CLASSPATH 環境変数をオーバーライドします。 SystemDefault.properties ファイルについては、SystemDefault.properties ファイルを参照してください。

さらに -Xbootclasspath オプションおよび java.endorsed.dirs プロパティーは、クラスの検索時にシステムがどのディレクトリーを検索するかに影響します。 -Xbootclasspath/a:path を使用すると、デフォルトのブートストラップ・クラスパスの後に path が付加され、/p:path と指定すると、デフォルトのブートストラップ・クラスパスの前に path が付加され、:path と指定すると、ブートストラップ・クラスパスは path によって置き換えられます。java.endorsed.dirs プロパティー用に指定されたディレクトリーに配置された JAR ファイルは、ブートストラップ・クラスパスの前に付加されます。

注: -Xbootclasspath を指定すると、システム・クラスが見つからなかったり、システム・クラスが誤ってユーザー定義クラスで置き換えられた場合に結果が保証されないので、注意が必要です。 このため、ユーザー指定のクラスパスの前にデフォルトのシステム・クラスパスが検索されるように指定することをお勧めします。

Java プログラムのランタイム環境を決定する方法については、Java システム・プロパティーを参照してください。

詳しくは、プログラムおよび CL コマンド API または統合ファイル・システムを参照してください。