その時に書きたいものを書きます

その時に書きたいものを書くんです

クラスパスについて

クラスパスっていう言葉が腹落ちしないので掘り下げる。

クラスパス=classまでのパス=JDKツールの探し先

Javaのプログラムはclassの集合である。.javaのファイルを作成し、それをコンパイルして.classを作成する。その.classのファイルが組み合わさって一つのアプリケーションとなる。これははるか昔新人研修のころにやって覚えたことだ。

クラスパスっていうのは、その一つ一つのクラスがどこにあるのか、を定義したものだ。

組み合わさって動こうにも、どこにあるのかがわからなければクラスたちは組み合わさることができない。クラスたちを統括する誰かが「このクラスはここにあって、このクラスはここにある」というのを把握しているから、クラスたちは組み合わさることができる。これがクラスパスの基本である。

CLASSPATHは何者だ

クラスパスではなくCLASSPATH。 狭義のクラスパスとでも言おうか。これは環境変数である。CLASSPATHという環境変数を宣言し、そこにクラスパスをいくつか指定してやると、JDKツールjava、jdb、javac、javahのことを言うらしい)は、このパスの中にもクラスを探しに行くことになる。

このように、「CLASSPATH」という環境変数を使ってクラスパスを設定することもできるが、これはアプリケーション個別で設定しているわけではなく、他のアプリケーションと齟齬がでてきてしまう可能性があるため、推奨はされていない模様。JDKツールjava、jdb、javac、javah)の-classpathオプションを使用して、アプリケーション個々で設定したほうが良さそうである。

Eclipseのビルド・パス

Eclipseのビルド・パス設定画面のライブラリータブにずらーっと並んでいるjarは、パスが指定されているものであり、コンパイル時や実行時にこのパスのjarが検索対象となる。ビルド・パスと言っているが、クラスパスとほぼ同義な模様。

まとめ

  • クラスパスというのは、java.exeやjavac.exeといったJDKツールが、実行時に使用するクラスを探しに行く先のディレクトリのこと。
  • 環境変数で一括で設定もできるが、JDKツールの-classpathオプションで個々に定義するのが推奨される。
  • EclipseJavaプロジェクトではビルド・パスの画面で設定を行う。