文系エンジニアの備忘録

文系ですがエンジニアです。

Javaのクラスパスの話

前記事でサーブレットコンパイル時のクラスパス指定について書きましたが、Javaのクラスパスというものその物について少し備忘録

 

クラスパスとは

 JavaはコアAPIと呼ばれる標準的なライブラリを持っており、それらについては特にパスを通すこと無く使うことができます。

ですが、他の方が開発されたライブラリや自分で作ったアプリケーション共有のクラスファイルなどを利用したいことがあります。(.jarファイルや、.classファイルなど)

それらを利用するにはクラスの場所を指定するクラスパスの指定が必要です。

以下2つ方法があります。

 

"-classpath"オプションを付ける

 前記事でも紹介したコンパイル時に"-classpath"オプションを付ける方法

$javac -classpath /hoge/hoge/hoge.jar hoge.java

など。

また複数のクラスパスを指定することも可能で、

$javac -classpath /hoge/hoge/hoge.jar:/fuga/fuga/fuga.jar hoge.java

と言った風に「:」コロンで繋ぐ。

但し、これはLinux,MacなどUNIX系のOSでの話でありWindows系では

C:¥hoge¥hoge.jar;C:¥fuga¥fuga.jar hoge.java

という風に「;」セミコロンで繋ぐことで複数のクラスパスを指定できるらしい。

 

環境変数CLASSPATHを通す

これは環境変数としてクラスパスを通してやることで指定なしにデフォルトで参照させることができる。

だが、これはすべてのコンパイルで参照されるので他のアプリケーションに影響をあたえる可能性があるため可能であれば上記"-classpath"オプションを推奨したい。

 

設定としてはUNIX系では各ユーザホームディレクトリに存在する".bash_profie"へ下記を追加する

CLASSPATH=.:/hoge/hoge/hoge.jar

はじめの「.:」では . はカレントディレクトリを表している。

上記オプションと同じくコロンで複数指定することが出来る。

 

以上クラスパスについて調べてみたことでした。

間違いや、更にいい方法などがあれば是非コメントをお願いします。