このセクションでは、Java ビルド・パス、つまり Java プロジェクトの作成に使用されるクラスパスの設定方法を説明します。 クラスパスは、ソースまたはバイナリー形式で使用可能な型を説明するクラスパス・エントリーの配列です。 このクラスパス・エントリーは、使用可能な型を見つけるために使用されます。 これらのエントリーの順序付けによって、使用可能な型の優先順位が定義されます。
すべてのパッケージ・フラグメント・ルートが Java ビルド・パスから直接作成されるため (各エントリーは 1 つ以上のパッケージ・フラグメント・ルーツにマップされます。 getPackageFragmentRoots を参照)、Java ビルド・パスは Java プロジェクト・エレメントの構造も決定します。
このセクションでは、別個に定義可能な Java ランタイム・パスについては説明しません。 Java プログラムの実行方法についての関連セクションを参照してください。
対応するプロジェクトの Java エレメントに
setRawClasspath
を使用して、プロジェクトのビルド・パスをプログラマチックに変更することができます。
以下に例を示します。
IProject project = ... // get some project resource
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] newClasspath = ...;
javaProject.setRawClasspath(newClasspath, someProgressMonitor);
また、Java ビルド・パスおよびプロジェクト出力ロケーションを同時に定義できるようにする
setRawClasspath
の変種があることに注意してください。
Java ビルド・パスは、プロジェクト・ロケーションの下に '.classpath' というファイル名で保持されます。 このファイルの目的は、ソース・コード・リポジトリーを使用して Java ビルド・パス設定を共用する方法を提供することです。 このファイルは特に、壊れるといけないので、手作業で編集しないでください。
クラスパス・エントリーは、JavaCore に定義されているファクトリー・メソッドを使用して、以下を参照するように定義できます。
たとえば、プロジェクト'MyProject' のソース・フォルダー 'src' を表すエントリーは次のようになります。
IClassPathEntry srcEntry = JavaCore.newSourceEntry(new Path("/MyProject/src");
たとえば、'MyProject' のクラス・ファイル・フォルダー 'lib' を表すエントリーは次のようになります。
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("/MyProject/lib"),
null, //no source
null, //no source
false); //not exported
たとえば、ソースが付加された外部 JAR を表すエントリーは次のようになります。
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("d:/lib/foo.jar"), // library location
new Path("d:/lib/foo_src.zip"), //source archive location
new Path("src"), //source archive root path
true); //exported
たとえば、暗黙的に従属プロジェクトにエクスポートされる前提条件プロジェクト
'MyFramework' を表すエントリーは次のようになります。
IClassPathEntry prjEntry = JavaCore.newProjectEntry(new Path("/MyFramework"), true); //exported
たとえば、変数 'HOME' を使用して間接的に参照されるライブラリーを表すエントリーは次のようになります。
ここでは 変数 'SRC_HOME' および 'SRC_ROOT' を使用してソースの添付も定義されています。
IClassPathEntry varEntry = JavaCore.newVariableEntry(
new Path("HOME/foo.jar"), // library location
new Path("SRC_HOME/foo_src.zip"), //source archive location
new Path("SRC_ROOT"), //source archive root path
true); //exported
JavaCore.setClasspathVariable("HOME", new Path("d:/myInstall"), null); // no progress
たとえば、システム・クラス・ライブラリー・コンテナーを表すエントリーは次のようになります。
IClassPathEntry varEntry = JavaCore.newContainerEntry(
new Path("JDKLIB/default"), // container 'JDKLIB' + hint 'default'
false); //not exported
JavaCore.setClasspathContainer(
new Path("JDKLIB/default"),
new IJavaProject[]{ myProject }, // value for 'myProject'
new IClasspathContainer[] {
new IClasspathContainer() {
public IClasspathEntry[] getClasspathEntries() {
return new IClasspathEntry[]{
JavaCore.newLibraryEntry(new Path("d:/rt.jar"), null, null, false);
};
}
public String getDescription() { return "Basic JDK library container"; }
public int getKind() { return IClasspathContainer.K_SYSTEM; }
public IPath getPath() { return new Path("JDKLIB/basic"); }
}
},
null);
getResolvedClasspath を使用してプロジェクトの解決済みクラスパスを照会することも可能です。 この操作は、関係する変数またはコンテナー、あるいはその両方の初期化を、必要に応じて起動します。 多くの Java モデル操作で、暗黙的に Java ビルド・パスが解決されることに注意してください (たとえば、プロジェクト・パッケージ・フラグメント・ルートを計算するには、ビルド・パスの解決が必要になります)。