金曜日, 5月 26, 2006

初心者本に書いていないこと - その2

>Javaコマンドは拡張子をつけられない
>javac コマンドは「javac sample.java」のように拡張子つきで実行できるが、
>できたクラスファイルを実行すべく「java sample.class」とするとクラスがないという
>エラーになる。「java sample」としなければならないので、コマンドラインの
>ファイル名補完を使う場合は要注意。

なんて書いていたが、ジム山田先生の補講で、実は「java コマンドに与えているのはクラスファイルのパス+ファイル名ではなく、クラス名なのだ!」ということを知った。

確かにクラス名なんだったら拡張子なんてつけちゃいけませんわな。で、その名前のクラスをどこで探すべきかという、ファイルシステム上の場所とのマッピングはクラスパスで行う、と。

なるほどね。。。

しかし、せっかくクラス名とファイル名を同じにしてあるのに、なぜクラスファイルのフルパス指定で実行するオプションがないのだろう? -verbose オプションで実行しても、クラスをどこに探しに行っているのかがイマイチ見えにくい気がするし、この点が改善されたら初心者でつまづく人が結構減りそうな気がするのは私だけだろうか。