CLASSPATH

Revised: Nov./19th/2003; Since: Nov./03rd/2003

本稿では、Java のクラスパスについて紹介します。

クラスパスとはなんだろうか

Java はライブラリ型の言語です。既存のクラスの集合をパッケージとして JAR (Java ARchive) ファイルに固めて提供し、利用側ではパッケージのパスを、実行環境のクラスパスに含めることで、JVM に通知して利用可能にします。

標準で利用可能なパッケージをコア・パッケージと呼び、サードベンダーや自分で作ったオプショナル・パッケージを後から追加するには、「Java 拡張機能機構」(The Java Extension Mechanism) という仕組みに則ります。

インストール型オプションパッケージ

次のディレクトリに配備した JAR ファイルは、デフォルトで探索されます。

特に、jre/lib/rt.jar は、デフォルトで探索されるコア・パッケージのライブラリです。

CLASSPATH 環境変数

インストール型オプション・パッケージ以外の場所に配備する場合は、環境変数の CLASSPATH にパスを設定します。ここでは、Windows ベースの OS における環境変数の設定方法をまとめておきます。

Windows NT系 (NT4, 2000, XP)

Windows NT系(2000, XP)で環境変数を登録するには、「コントロール パネル」 -> 「システム」を開いて、タブ「詳細(詳細設定)」の中の、ボタン「環境変数」を押下。開いた「システムの環境変数」で、CLASSPATHを選択してボタン「編集」を押下することでセットできます。既存の定義との区切り文字はセミコロン( ; )です。

セットした後、ボタン「OK」を押下した後に開いたコマンド プロンプトで、コマンド"set CLASSPATH"を発行すれば、反映されていることが確認できるでしょう。

Windows 9x系 (95, 98, 98SE, Me)

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の確認

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で追加された新しい仕組みです。ここでは、ブートクラスパスを上書きするために、次の二つの方法を提供しています。

例えば、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 が実行されていることが分かります。



Copyright © 2003 SUGAI, Manabu. All Rights Reserved.
SEO [PR] !uO z[y[WJ Cu