サーバー関連メニュー

トップページ

Google
WWWを検索
サイト内を検索

JavaのCLASSPATHの設定方法

このエントリーをはてなブックマークに追加 Check Clip to Evernote

Javaはクラス・ファイルをメモリー上のロードし実行していくアプリケーション実行環境ですが、普段はインストーラーや統合開発環境に任せていて、そのクラスをどこに配置すればいいのか、どうやってどこにクラスを配置しているか指定するのか、意識しない事が多いと思われます。しかしながら、運用環境の構築では正しく設定することが求められてきます。Javaのクラスの配置場所(CLASSPATH)の設定方法を確認してみましょう。

まずクラスの配置場所ですが、以下の二つがあげられます。

  1. 環境変数CLASSPATH
  2. java、javacコマンドの-cpオプション
  3. $JAVA_HOME/jre/lib/ext/
  4. java、javacコマンドの-extdirsオプション

$JAVA_HOMEは、Javaのインストール・フォルダーをあらわす環境変数で、MS-Windows上のコマンド・プロンプトでは%CLASSPATH%で表されます。

環境変数CLASSPATH

環境変数CLASSPATHは、1つのjarファイルか、クラスを展開したディレクトリーを指定することができます。

CLASSPATH=.:/var/tomcat/common/lib/servlet.jar

以上は実際のクラスパスの例ですが、ディレクトリーかjarファイルをコロン(:)で区切って指定してきます。ここではカレントディレクトリー(.)と、servlet.jarが指定されています。

java、javacコマンドの-cpオプション

-cpオプションをつけることで、環境変数CLASSPATHの指定をコンパイル時や、アプリケーション実行時に指定することができます。

java -cp /var/tomcat/common/lib/servlet.jar ExampleServlet.java

以上は実際のクラスパスの例ですが、ディレクトリーかjarファイルをコロン(:)で区切って指定してきます。

$JAVA_HOME/jre/lib/ext/

環境変数やオプションをいちいち指定するのが面倒な場合、環境変数JAVA_HOME以下のjre/lib/ext/ディレクトリーにjarファイルを配置することで、クラスを利用可能にできます。

-extdirs

往々にして、Javaでは色々なjarファイルに依存したアプリケーションを書くことになります。この場合は、-cpやclasspathによる指定は冗長になりますが、JAVA_HOME以下にjarファイルを配置したくないものです。そういう場合は-extdirsオプションで、jarファイルの格納ディレクトリーを変更しましょう。

利用例

実際の利用例を見た方が理解が早いときが多いので、ウェブ・アプリケーションをコマンド・プロンプトからjavacコマンドを使ってコンパイルする例をあげておきます。

javac -extdirs ../../common/lib:WEB-INF/lib -classpath WEB-INF/classes:$CLASSPATH -d WEB-INF/classes -encoding Shift_JIS -sourcepath WEB-INF/src WEB-INF/src/com/uncorrelated/imagebbs/RSS.java

MS-Windows環境では、設定値の区切りがコロン(:)からセミコロン(;)になることと、環境変数$CLASSPATHが%CLASSPATH%になることに注意してください。

まず、-extdirsでTomcatの共通ライブラリー群と、ウェブ・アプリケーションが用いるライブラリー群を指定しています。次に、-classpathで、環境変数$CLASSPATHの中身とともにウェブ・アプリケーション本体のクラス群を指定しています。なお、-dは生成するクラスファイルの出力先であり、-encodingはShift_JISのソースコードをEUC_JPの環境でコンパイルするため、-sourcepathはウェブアプリケーションのトップ・ディレクトリーでコンパイルを行ったために付記しています。