• ベストアンサー

クラスパスについて再度質問です。

 Javaヴァーチャルマシンは、まず、カレントディレクトリから実行可能なクラスファイルを探すと聞いてました。  しかし、私のパソコンでは、カレントディレクトリにて、コンパイルした物でもクラスパスを通さないと、実行されません。クラスパスを通せばそれで済むじゃないか!と言われてしまいそうですが、なにか腑に落ちません。  そもそも、JavaVMは、そんな風に設計されていないと思うんですが。。  そこで、このような事はなぜ起こるのでしょうか?原因の判る方はよろしくお願いします。  

質問者が選んだベストアンサー

  • ベストアンサー
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.1

常にカレントディレクトリがクラスパスに設定されると思っているのならば違います。 環境変数CLASSPATHが設定されているとそれが使用されます。 つまりCLASSPATHの設定でカレントディレクトリが追加されていないと、 カレントディレクトリからクラスファイルを検索しません。 まとめると、 ○コマンドラインで-classpath使用  →-classpathで指定したクラスパスを使用。 ○コマンドラインの-classpath使用しない  環境変数CLASSPATH設定あり   →環境変数CLASSPATHで指定したクラスパスを使用。  環境変数CLASSPATH設定なし   →カレントディレクトリをクラスパスとして使用。 だと思います。間違っていたらごめんなさい。 あとlib/ext以下のjarファイルとかもクラスパスに追加されるかと思います。

kamkamkam3
質問者

お礼

ご回答ありがとうございます。 他のメーリングリストも回ったところ、やはりクラスパスにカレントディレクトリも含めなくてはいけないみたいですね。 しかし、以前読んだ、分厚い本にはJAVAヴァーチャルマシンは、クラスパスを探す時、最初にカレントディレクトリを探す。と書いてあったんです。で、ぼくも、一々カレントディレクトリをクラスパスに含めなくても実行できたので、てっきりそういうものだと思っていたんですが。。。甘かったみたいです。 どうも、ありがとうございました。またよろしくお願いします。

関連するQ&A