JavaのCLASSPATHの設定方法
Javaはクラス・ファイルをメモリー上のロードし実行していくアプリケーション実行環境ですが、普段はインストーラーや統合開発環境に任せていて、そのクラスをどこに配置すればいいのか、どうやってどこにクラスを配置しているか指定するのか、意識しない事が多いと思われます。しかしながら、運用環境の構築では正しく設定することが求められてきます。Javaのクラスの配置場所(CLASSPATH)の設定方法を確認してみましょう。
まずクラスの配置場所ですが、以下の二つがあげられます。
- 環境変数CLASSPATH
- java、javacコマンドの-cpオプション
- $JAVA_HOME/jre/lib/ext/
- java、javacコマンドの-extdirsオプション
$JAVA_HOMEは、Javaのインストール・フォルダーをあらわす環境変数で、MS-Windows上のコマンド・プロンプトでは%CLASSPATH%で表されます。
環境変数CLASSPATH
環境変数CLASSPATHは、1つのjarファイルか、クラスを展開したディレクトリーを指定することができます。
以上は実際のクラスパスの例ですが、ディレクトリーかjarファイルをコロン(:)で区切って指定してきます。ここではカレントディレクトリー(.)と、servlet.jarが指定されています。
java、javacコマンドの-cpオプション
-cpオプションをつけることで、環境変数CLASSPATHの指定をコンパイル時や、アプリケーション実行時に指定することができます。
以上は実際のクラスパスの例ですが、ディレクトリーかjarファイルをコロン(:)で区切って指定してきます。
$JAVA_HOME/jre/lib/ext/
環境変数やオプションをいちいち指定するのが面倒な場合、環境変数JAVA_HOME以下のjre/lib/ext/ディレクトリーにjarファイルを配置することで、クラスを利用可能にできます。
-extdirs
往々にして、Javaでは色々なjarファイルに依存したアプリケーションを書くことになります。この場合は、-cpやclasspathによる指定は冗長になりますが、JAVA_HOME以下にjarファイルを配置したくないものです。そういう場合は-extdirsオプションで、jarファイルの格納ディレクトリーを変更しましょう。
利用例
実際の利用例を見た方が理解が早いときが多いので、ウェブ・アプリケーションをコマンド・プロンプトからjavacコマンドを使ってコンパイルする例をあげておきます。
MS-Windows環境では、設定値の区切りがコロン(:)からセミコロン(;)になることと、環境変数$CLASSPATHが%CLASSPATH%になることに注意してください。
まず、-extdirsでTomcatの共通ライブラリー群と、ウェブ・アプリケーションが用いるライブラリー群を指定しています。次に、-classpathで、環境変数$CLASSPATHの中身とともにウェブ・アプリケーション本体のクラス群を指定しています。なお、-dは生成するクラスファイルの出力先であり、-encodingはShift_JISのソースコードをEUC_JPの環境でコンパイルするため、-sourcepathはウェブアプリケーションのトップ・ディレクトリーでコンパイルを行ったために付記しています。