Java ビルド・パスの設定

このセクションでは、Java のビルド・パスを設定する方法を説明します。 ビルド・パスとは、Java プロジェクト (IJavaProject) のビルドに使用されるクラスパスです。

クラスパスは、使用可能な型を記述するクラスパス・エントリー (IClassPathEntry) の 配列です。 型はソースまたはバイナリー形式で表示でき、パスのエントリーの配列によって、 ビルド時に型を解決するためのルックアップ配列が定義されます。

Java のビルド・パスは、Java プロジェクト・エレメントの構造に反映されます。  パッケージ・フラグメント・ルート (IPackageFragmentRoot) についてプロジェクトを照会できます。 それぞれのクラスパス・エントリーは 1 つ以上のパッケージ・フラグメント・ルートにマップされます。 さらに、それぞれのパッケージ・フラグメント・ルートにはパッケージ・フラグメントのセットが含まれます。

ビルド・パスについてのこの説明には、Java ランタイム・パスは含まれていません。 これは、ビルド・パスとは別に定義できます。 (ランタイム・クラスパスの説明については、『Java プログラムの実行』を参照してください。

ビルド・パスの変更

対応するプロジェクトの Java エレメントに setRawClasspath を使用して、プロジェクトのビルド・パスをプログラマチックに変更することができます。 次のコードによって、プロジェクト・リソースのクラスパスが設定されます。

	IProject project = ... // get some project resource
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(注: 「未加工の」クラスパスという用語は、 エントリー・ロケーションを記述するために使用された変数が解決されていないということを強調 するために使用されます。)

Java のビルド・パスは、プロジェクトのファイル構造内の「.classpath」という名前のファイルで保持されます。  このファイルの目的は、なんらかのソース・コード・リポジトリーを使用して Java のビルド・パス設定を他のものと共用する方法を提供することです。 このファイルは特に、壊れるといけないので、手作業で編集しないでください。

クラスパス・エントリー

クラスパス・エントリーは、JavaCore に定義されているファクトリー・メソッドを使用して定義できます。   クラスパス・エントリーは、以下のいずれかを参照できます。

除外パターン

クラスパス・ソース・エントリーに排他パターンを割り当てることができます。 排他パターンは、ソース・フォルダー内のあるリソースがクラスパスで可視にならないようにします。 パターンを使用すると、リソース・ツリーの指定部分がフィルターに掛けられ除外されます。 それぞれの排他パターン・パスは、クラスパス・エントリーの相対パスで、Ant に類似したパターン・メカニズムを使用します。 外部パターンが内部パターンを除外する限り、除外パターンを使用して、 ネストされたソース・フォルダーを指定できます。

除外パターンの詳細については、getExclusionPatterns() を参照してください。

Java プロジェクト API isOnClasspath は、特定のリソースがクラスパスにあるかどうかを判別する前に、組み込みパターンおよび除外パターンの両方を確認します。

注釈:

組み込みパターン

クラスパス・ソース・エントリーに組み込みパターンを割り当てることもできます。 組み込みパターンは、クラスパスで可視にするリソースを明示的に定義します。  組み込みパターンが指定されない場合、ソース・エントリーは、関係のあるすべてのファイルを、 このソース・エントリーのパスがルートとなるリソース・ツリーに組み込みます。 1 つまたは複数の組み込みパターンを指定することは、リソース・ツリーのうち指定された部分だけを組み込むことを意味します。 指定する各パスは相対パスでなければならず、このソース・エントリーのパスに相対的に解釈されます。 ファイル・パターンには、大/小文字の区別があります。 このエントリーの除外パターンの 1 つまたは複数によって除外されないかぎり、 これらのパターンの 1 つまたは複数と一致するファイルが、対応するパッケージ・フラグメント・ルートに組み込まれます。

パス・パターンの構文およびセマンティクスについては、 getExclusionPatterns() を参照してください。 組み込みパターンがない場合は、明示的な組み込みパターン ** と意味的に同等です。

Java プロジェクト API isOnClasspath は、特定のリソースがクラスパスにあるかどうかを判別する前に、組み込みパターンおよび除外パターンの両方を確認します。

例:

クラスパス解決

クラスパス変数およびコンテナーを使用して、動的にバインドされたクラスパス・エントリーを定義できるため、 クラスパス API は未加工のクラスパスと解決されたクラスパスを区別します。 未加工のクラスパスとは、 setRawClasspath を使用して Java プロジェクトに初めに設定されたもので、プロジェクトに getRawClasspath を要求することでさらに照会できます。 解決されたクラスパスは、getResolvedClasspath を使用して照会できます。 この操作は、クラスパスの解決に必要な任意の変数およびコンテナーの初期化を起動します。 多くの Java モデル操作で、暗黙的に Java のビルド・パスが解決されます。 例えば、プロジェクト・パッケージ・フラグメント・ルートを計算するには、 ビルド・パスの解決が必要になります。