環境変数が分からない。

友人から送られてきたJavaファイルをコマンドプロンプトで実行しようとした。春にパソコンを再インストールしてからずっとEclipse上でJavaを動かしていたので、コマンドプロンプト上からコンパイルして実行するのは久しぶりだった。

javac (ファイル名)
java (クラスファイル)

ってやれば普通は大丈夫なのだけど、なぜか出来ない。「Javacはコマンドとして認識されていません」っていう表示が出てしまう。Javaは実行できないってことか…。でも普通にEclipseは動いているし、Eclipse上でJavaは実行できる。ということはコマンドプロンプト上からでもJavaは実行できるはずなのに。

環境変数が間違っている可能性があるので、PATHを見直して実行してみたけどまだ駄目だった。PATHの他にCLASSPATHっていうのも設定できるのだけど、これってどういう意味があるのだろう。調べてみた。

CLASSPATHは、コンパイルする時にも実行する時にも使われます。
その目的は、皆さんが作ったクラスの中で利用している他のクラスがどこにあるかを、 javacやjavaコマンドなどに教えることです。

例えば、JDBCドライバ自体はJDKに入っていないので、 RDBベンダーが提供するドライバを利用することになります。そのドライバが入っているファイルはどれ? という情報を設定するのがCLASSPATHというわけです。Windowsの場合は、
set CLASSPATH=C:\orant\lib\classes12.zip
というように設定します。
複数のファイルを指定したい場合は;(セミコロン)(UNIXの場合は:(コロン))で区切ります。
set CLASSPATH=C:\orant\lib\classes12.zip;D:\tomcat\lib\crimson.jar
という要領です。(http://www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html)

なるほど。ぜんぜん知らなかった。他にもPATHを調べていたら、JDKへのアドレスを指定しなければいけないことが分かった。SDKはインストールしたけどJDKなんてインストールしていない。http://msugai.fc2web.com/java/app/setup.htmlを参考にJDKをインストールしてみたら、やっとjavacが実行できた。ちゃんとJDKのbinフォルダにjavacっていう実行ファイルがある。SDKには無い。だから今まで出来なかったらしい。