クラスパスについて復習しておく

JVMは以下の順でクラスを探索する。

  1. ブートクラスパス
  2. エクステンション・ディレクト
  3. クラスパス
  4. ダウンロード・エクステンション

ブートクラスパス

システム標準クラスライブラリが含まれる場所。rt.jarとi18n.jarか?
変更方法は下記。

  • コンパイル時:javacコマンドのオプション -bootclasspath
  • 実行時:javaコマンドの非標準オプション -Xbootclasspath

エクステンション・ディレクト

jre/lib/ext 。この中のjarが読み込まれる。
標準クラスライブラリ以外で、クラスライブラリをシステムに追加したい場合はここに格納すればよい。
追加指定することもできる。方法は以下の通り。

クラスパス

指定しなければ . (カレントディレクトリ)のみ。
指定対象は以下の通り。

指定方法は以下の通り。複数の場合、Windows系では ; 区切り、UNIX系では : 区切りで。

指定した場合は . は参照されない。参照させたい場合は、クラスパスに明示的に . を含ませる必要がある。

ダウンロード・エクステンション

jarのマニフェストに記載されるClass-Pathで指定されたjarが読み込まれる。

補足:エンドーズド・オーバーライド

システム標準クラスライブラリの一部を置換するための仕組み。
指定方法は下記。

補足:サブディレクトリの検索

サブディレクトリは再帰的に検索されません。たとえば、foo/* では foo 内の JAR ファイルだけを検索し、foo/bar、foo/baz などは検索しません。

java.sun.com - クラスパスの設定