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 は、特定のリソースがクラスパスにあるかどうかを判別する前に排他パターンを確認します。

クラスパス解決

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

Copyright IBM Corporation and others 2000, 2003. All Rights Reserved.