クラスパス設定のコード in JDK

Javaアプリケーションの実行時に、クラスパスに何も指定しない場合は、カレントディレクトリが初期値として設定されます。何かを指定した場合は、初期値が上書きされるため、クラスパスにカレントディレクトリを含めたいならば明示的に記述する必要があります。

…という部分のコードをOpenJDKで読みたいなぁと思っていたところ、見つけたのでメモ。

/{openjdk-build-dir}/jdk/src/share/bin/java.c にあります。たとえば、初期値。

    /* Set default CLASSPATH */
    if ((s = getenv("CLASSPATH")) == 0) {
        s = ".";
    }

また、クラスパスの指定に*(アスタリスク)を使うことで、あるディレクトリ以下のjarファイル全てを指定する、といったことができます。そういった動作は、同じディレクトリのwildcard.cに書かれているようです。

クラスローダーが、クラスパスの仕組みを使ってロードされていないクラスを探すのであれば、おそらくこのあたりも重要でしょう。というわけで、読もうっと・・・如何せん、正月休みで理解しようというのは甘かったデス。分かるまで掘り進むカンジで。