Java™ のクラスはそれぞれ、あるパッケージに属しています。 どのクラスがどのパッケージに含まれるかは、Java ソース・ファイルの最初のステートメントに記述されます。 ソース・ファイルにパッケージ・ステートメントがない場合、そのクラスは名前のないデフォルトのパッケージに含まれると見なされます。
パッケージ名は、クラスの位置するディレクトリー構造と関連があります。 統合ファイル・システムでは、多くの PC システムや UNIX® システムと同様に、階層ファイル構造で Java クラスを格納できます。 Java クラスを格納するディレクトリーの相対ディレクトリー・パスは、そのクラスが属するパッケージの名前と一致していなければなりません。 たとえば、次の Java クラスで考えてみます。
package classes.geometry; import java.awt.Dimension; public class Shape { Dimension metrics; // The implementation for the Shape class would be coded here ... }
上記のコードのパッケージ・ステートメントは、Shape クラスが classes.geometry パッケージに属していることを示しています。 したがって、Java ランタイムが Shape クラスを検出するためには、Shape クラスが相対ディレクトリー構造の classes/geometry に格納されていなければなりません。
たとえば、Shape クラスが「ルート」(/) ファイル・システムの /Product/classes/geometry ディレクトリーに格納されている場合は、クラスパスに /Product を指定する必要があります。
図 1: 異なるパッケージ内にある同じ名前の Java クラスのディレクトリー構造の例
Java コンパイラーは、Java ソース・コードをコンパイルするときに、Java クラスパス、パッケージ名、およびディレクトリー構造を使ってパッケージとクラスを探します。 詳しくは、Java クラスパスを参照してください。