VM)がどの“場所”からクラスファイルを読み込めばよいかを、指定するためのものです。VMにはありますが、それについては、後半で説明します)。VMを実行するときに、次のように入力します。<場所>”が、実際にクラスパスを指定している部分です。クラスパスに複数の“場所”を指定するには、“場所”の間を記号“;”(セミコロン)で区切ります。VMは、クラスパスの先頭に指定された“場所”から、クラスファイルを見つけるまで、順番に“場所”を検索していきます。クラスパスに、“場所”としてディレクトリC:\test\classesとディレクトリC:\tmpを指定して、クラスWordProcessorを実行するには、次のように入力します。VMは、まず、ディレクトリC:\test\classesを検索し、もし見つからなければ、次にディレクトリC:\tmpを検索します。クラスパスを検索した結果、クラスファイルWordProcessor.classが見つかれば、それを実行します。VMは次のようなエラーメッセージを表示して、クラスファイルが見つからなかったことを報告します。クラス名クラス名の部分には、実際に指定したクラス名が表示されます。クラスファイルを実行しようとして上のようなエラーメッセージが表示された場合は、クラスパスを誤って指定している可能性が高いです。クラスパスを指定するにあたり、最も間違えやすいのは、カレントディレクトリを指定し忘れることです。VMは、カレントディレクトリを特別扱いしません。そのため、カレントディレクトリをクラスパスに指定していなければ、カレントディレクトリ内の検索は行われません。VMはクラスパスを自動的にカレントディレクトリに指定します。WordProcessorと入力するのは、まったく同じです。VMはクラスパスに指定された“場所”から、クラスファイルを検索しようとします。“場所”には、前節で説明したように、ディレクトリを指定できます。VMでは、ディレクトリ以外にも特別なファイルを“場所”として指定できます。特別なファイルとは、具体的には、ZIPファイルとJARファイルの2種類のファイルです。ZIPファイルとは、複数のファイルを、1つのファイルにまとめたものです。VMはZIPファイル中のクラスファイルを、読み込むことができます。JARファイルとは、基本的にはZIPファイルと同じく、複数のファイルを1つのファイルにまとめたものです。ARchiveの略です(JARファイルには単にファイルをまとめるだけでなく、ほかにもいろいろな機能がありますが、ここでは説明しません)。クラスパスにZIPファイルやJARファイルを指定するには、単にそのファイル名を指定します。クラスパスにディレクトリC:\tmpとJARファイルC:\libraries\Library.jarを指定して実行するには、次のように入力します。VMのクラスファイルの読み込みは、実はもっと複雑な仕組みになっています。ここではその仕組みについて説明します。VMは次のように、クラスを3段階に分けて検索します。VMがクラスを検索するのが、ブートクラスパスです。ブートクラスパスには例えば、java.lang.Objectやjava.net.URLClassLoaderやjava.io.OutputStreamなどの、システム標準クラスライブラリのクラスが含まれます。前節で説明したクラスパスとブートクラスパスは異なるものです。クラスパスをいくら変更しても、ブートクラスパスには影響しません。ブートクラスパスを変更する方法については、「javaコマンドを使いこなす」を参照してください。VMは次にエクステンションディレクトリ中のJARファイルを検索します。Javaでは、標準クラスライブラリ以外に、クラスライブラリをシステムに追加するための仕組みが存在します。これをインストールエクステンションメカニズムと呼びます。このインストールエクステンションメカニズムで追加するクラスライブラリのJARファイルを置くディレクトリが、エクステンションディレクトリです。エクステンションメカニズムについては、「クラスパスを使わないでクラスライブラリを利用する」を参照してください。VMは前節で説明した、いわゆる“クラスパス”を検索します。VMに読み込まれます。VMは、現在のように3段階ではなく、いわゆる“クラスパス”のみを用いて、すべてのクラスを検索していました。そのため、クラスパスを設定するときには、アプリケーションのクラスの場所だけでなく、標準クラスライブラリの場所や、アプリケーションが利用する追加クラスライブラリの場所も指定しなければなりませんでした。VMは、標準クラスライブラリはブートクラスパスで、アプリケーションが利用する追加ライブラリはエクステンションメカニズムで、クラスファイルを検索するので、クラスパスには、アプリケーションのクラスの場所を指定するだけで済むようになりました。(2017/5/9)ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。(2017/4/6)ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。(2017/4/3)初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。