Revised: Nov./19th/2003; Since: Nov./03rd/2003
本稿では、Java のクラスパスについて紹介します。
Java はライブラリ型の言語です。既存のクラスの集合をパッケージとして JAR (Java ARchive) ファイルに固めて提供し、利用側ではパッケージのパスを、実行環境のクラスパスに含めることで、JVM に通知して利用可能にします。
標準で利用可能なパッケージをコア・パッケージと呼び、サードベンダーや自分で作ったオプショナル・パッケージを後から追加するには、「Java 拡張機能機構」(The Java Extension Mechanism) という仕組みに則ります。
次のディレクトリに配備した JAR ファイルは、デフォルトで探索されます。
lib/ext
jre/lib/ext
特に、jre/lib/rt.jar
は、デフォルトで探索されるコア・パッケージのライブラリです。
インストール型オプション・パッケージ以外の場所に配備する場合は、環境変数の CLASSPATH にパスを設定します。ここでは、Windows ベースの OS における環境変数の設定方法をまとめておきます。
Windows NT系(2000, XP)で環境変数を登録するには、「コントロール パネル」 -> 「システム」を開いて、タブ「詳細(詳細設定)」の中の、ボタン「環境変数」を押下。開いた「システムの環境変数」で、CLASSPATHを選択してボタン「編集」を押下することでセットできます。既存の定義との区切り文字はセミコロン( ;
)です。
セットした後、ボタン「OK」を押下した後に開いたコマンド プロンプトで、コマンド"set CLASSPATH"を発行すれば、反映されていることが確認できるでしょう。
Windows 9x系(98, Me)の場合は、"c:\autoexec.bat
"をテキスト・エディタ(メモ帳)で開いて、"set CLASSPATH=xxx;xxx;xxx
"の記述の中に、上記のパスを含めます。初めて設定する場合は、set CLASSPATH=xxxx
の行をファイル末尾に追加してください。この場合も、既存の定義との区切り文字はセミコロンです。
【例】
set CLASSPATH=C:\xerces-2_5_0\xml-apis.jar;C:\xerces-2_5_0\xercesImpl.jar;C:\xerces-2_5_0\xercesSamples.jar;.
DOSプロンプトでコマンド"c:\autoexec.bat"を発行するか、再起動することによって反映されます。DOSプロンプトでコマンド"set CLASSPATH"を発行することで反映されていることが確認できます。
尚、Meの場合は、「スタート」->「プログラム」->「アクセサリ」->「システムツール」->「システム情報」から、「Microsoft ヘルプとサポート」を開いて、「ツール」->「システム設定ユーティリティ」 を選択して、「環境」タブの中で環境変数を設定することもできます。
CLASSPATH設定/反映後にコマンドプロンプト(DOSプロンプト)を起動して、次のコマンドによりCLASSPATH変数が有効になったことを確認できます。
【例】
>set CLASSPATH CLASSPATH=C:\xerces-2_5_0\xml-apis.jar;C:\xerces-2_5_0\xercesImpl.jar;C:\xerces-2_5_0\xercesSamples.jar;.
オプショナル・パッケージ以外のクラスパスとして、ブートクラスパスというものがあります。これは、JVM 起動時に自動的に探索経路に設定されるクラスパスで、以上で紹介してきたオプショナル・パッケージの探索経路よりも上位にコンカチされます。
従って、ブートクラスパスに設定されたパッケージは、環境変数 CLASSPATH
や、オプション-classpath
, -jar
などで設定しても、上書きできません。
ブートクラスパスを上書きするには、二つの方法があります。一つは、オプション -Xbootclasspath
でブートクラスパス自身を上書きすることで、もう一つは、"Endorsed Standards Override Mechanism" という仕組みを利用するものです。
"Endorsed Standards Override Mechanism" は、J2SE 1.4 Beta 3で追加された新しい仕組みです。ここでは、ブートクラスパスを上書きするために、次の二つの方法を提供しています。
/lib/endorsed
" 配下に JAR ファイルを置くjava.endorsed.dirs
" の値として JAR ファイルが存在するディレクトリのパスを指定する例えば、SDK 1.4 以上では、 XSLT プロセッサである Apache Xalan が、ブートストラップクラスになっています。これを、別の実装に切り替える場合は、次のように実行時オプションで指定することができます。
>java org.apache.xalan.processor.XSLProcessorVersion Xalan Java 2.4.1 >java -Djava.endorsed.dirs=C:\xalan-j_2_5_1\bin org.apache.xalan.processor.XSLProcessorVersion Xalan Java 2.5.1
前者はなにも指定していないため、SDK 1.4.2 に組み込まれた Xalan 2.4.1 が実行されています。後者は、システムプロパティで Endorsed Standards Override Mechanism を使っているので、指定したディレクトリ配下の Xalan 2.5.1 が実行されていることが分かります。