Tento oddíl popisuje nastavení cesty sestavení Java. Cesta sestavení je cesta ke třídě (classpath) používaná k sestavení projektu Java (IJavaProject).
Cesta ke třídě je polem položek cesty ke třídě (IClassPathEntry), jež popisují dostupné typy. Typy mohou být uvedeny formou zdrojového textu nebo binárního souboru, uspořádání položek cesty definuje pořadí vyhledávání interpretovaných typů během sestavování.
Cesta sestavení Java je obsažena ve struktuře prvku projektu Java. Můžete v projektu vyhledávat kořeny fragmentu balíčku (IPackageFragmentRoot). Každá z položek cesty ke třídě mapuje jeden nebo více kořenů fragmentu balíčku, které dále obsahují sadu fragmentů balíčku.
Cesta sestavení se samozřejmě odlišuje od cesty běhové komponenty Java, kterou lze definovat nezávisle na cestě sestavení. (Další informace o běhová cestě ke třídě viz Spuštění kódu v jazyce Java.
Cestu sestavení projektu lze změnit z programu s použitím
setRawClasspath na prvek Java příslušného projektu. Následující kód nastavuje cestu ke třídě (classpath) pro prostředek typu projekt:
IProject project = ... // získat prostředek typu projekt
IJavaProject javaProject = JavaCore.create(project);
IClasspathEntry[] newClasspath = ...;
javaProject.setRawClasspath(newClasspath, someProgressMonitor);
(Poznámka: Termín "přímá" cesta ke třídě se používá ke zdůraznění skutečnosti, že proměnné použité k popisu poloh položky nejsou interpretovány.)
Cesta sestavení Java je uchovávána v souboru s názvem '.classpath' v souborové struktuře projektu. Účelem tohoto souboru je sdílení nastavení cesty sestavení Java s ostatními prostřednictvím úložiště zdrojového kódu. Tento soubor by neměl být upravován ručně. V opačném případě může dojít k jeho porušení.
Položky cesty ke třídě lze definovat s použitím metod vytváření definovaných v JavaCore. Položky cesty ke třídě mohou odkazovat na následující objekty:
Následuje příklad položky cesty ke třídě, která popisuje zdrojový adresář 'src' projektu 'MyProject':
IClassPathEntry srcEntry = JavaCore.newSourceEntry(new Path("/MyProject/src"));
Následuje příklad položky cesty ke třídě, která popisuje složku souboru třídy 'lib' projektu 'MyProject':
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("/MyProject/lib"),
null, //žádný zdroj
null, //žádný zdroj
false); //bez exportu
Následující položka cesty ke třídě má připojen zdroj:
IClassPathEntry libEntry = JavaCore.newLibraryEntry(
new Path("d:/lib/foo.jar"), // umístění knihovny
new Path("d:/lib/foo_src.zip"), //umístění zdrojového archivu
new Path("src"), //cesta kořenového adresáře zdrojového archivu
true); //export
Cesta kořenového adresáře zdrojového archivu popisuje umístění kořenového adresáře ve zdrojovém archivu. Je-li nastavena nulová hodnota, bude kořen archivu určován dynamicky.
Následující položka cesty ke třídě popisuje vstupní specifikace projektu 'MyFramework'.
IClassPathEntry prjEntry = JavaCore.newProjectEntry(new Path("/MyFramework"), true); //exportováno
Lze registrovat automatický inicializátor proměnné cesty ke třídě, který se spouští bodem rozšíření org.eclipse.jdt.core.classpathVariableInitializer při spouštění pracovního prostoru.
Následující položka cesty ke třídě popisuje knihovnu, jejíž umístění je uloženo v proměnné 'HOME'. Připojení zdroje se definuje s použitím proměnných 'SRC_HOME' a 'SRC_ROOT' :
IClassPathEntry varEntry = JavaCore.newVariableEntry(
new Path("HOME/foo.jar"), // umístění knihovny
new Path("SRC_HOME/foo_src.zip"), //umístění archivu zdrojů
new Path("SRC_ROOT"), //cesta kořenového adresáře archivu zdrojů
true); //export
JavaCore.setClasspathVariable("HOME", new Path("d:/myInstall"), null); // žádný postup
Lze registrovat automatický inicializátor pořadače cest ke třídě, který se spouští se zpožděním bodem rozšíření org.eclipse.jdt.core.classpathContainerInitializer při spouštění pracovního prostoru.
Následující položka cesty ke třídě popisuje pořadač systémové knihovny tříd:
IClassPathEntry varEntry = JavaCore.newContainerEntry(
new Path("JDKLIB/default"), // pořadač 'JDKLIB' + odkaz 'default'
false); //bez exportu
JavaCore.setClasspathContainer(
new Path("JDKLIB/default"),
new IJavaProject[]{ myProject }, // hodnota pro '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 "Základní pořadač knihovny JDK"; }
public int getKind() { return IClasspathContainer.K_SYSTEM; }
public IPath getPath() { return new Path("JDKLIB/basic"); }
}
},
null);
Zdrojové položce cesty ke třídě může být přiřazen vzor pro vyloučení, který zamezuje zahrnutí určitých prostředků zdrojové složky do cesty ke třídě. Použití vzorů umožňuje odfiltrování určitých úseků zdrojového stromu. Všechny cesty vzoru pro vyloučení jsou relativní k položce cesty ke třídě a používají mechanizmus vzorů obdobný systému Ant. Vzory pro vyloučení lze použít k zadání vnořené zdrojové složky tak, že vnější vzor vylučuje vnitřní vzor.
Další informace o vzorech pro vyloučení viz getExclusionPatterns().
Rozhraní API projektu Java isOnClasspath před zjišťováním, zda je určitý prostředek na cestě ke třídě, zkontroluje vzory pro zahrnutí a vyloučení.
Poznámky:
IPath sourceFolder = new Path("/MyProject/src"); IPath outputLocation = sourceFolder.append("bin"); IClassPathEntry srcEntry = JavaCore.newSourceEntry( sourceFolder, // umístění zdrojové složky new Path[] { outputLocation }, // vyloučená vnořená složka outputLocation); // výstupní umístění
Zdrojové položce cesty ke třídě může být přiřazen rovněž zdroj pro zahrnutí, který výslovně definuje prostředky, které mají být dostupné v cestě ke třídě. Nejsou-li zadány žádné vzory pro zahrnutí, bude použit zdroj ze všech relevantních souborů ve stromu prostředků s kořenem ve vstupní cestě tohoto zdroje. Zadáte-li jeden nebo několik vzorů pro zahrnutí, budou zahrnuty pouze uvedené části stromu prostředků. Všechny cesty musejí být zadány jako relativní cesty. Budou interpretovány relativně ke vstupní cestě tohoto zdroje. Vzory souborů rozlišují malá a velká písmena. Soubor, jehož název odpovídá jednomu z těchto vzorů, příp. několika vzorům, je zahrnut do kořenu fragmentu příslušného balíčku, pokud není vyloučen jedním nebo několika vzory pro vyloučení této položky.
Další informace o syntaxi a sémantice vzorů cest viz getExclusionPatterns(). Nepřítomnost vzorů pro zahrnutí je sémanticky ekvivalentní s výslovným vzorem pro zahrnutí **
.
Rozhraní API projektu Java isOnClasspath před zjišťováním, zda je určitý prostředek na cestě ke třídě, zkontroluje vzory pro zahrnutí a vyloučení.
Příklady:
src/**
zahrnuje všechny soubory ve složce src
, která je umístěna.
src/**
a tests/**
zahrnují všechny soubory ve složkách src
a tests
. Tyto složky jsou umístěny v kořenové složce.
src/**
v kombinaci se vzorem pro vyloučení src/**/Foo.java
zahrnuje všechny soubory složky src
(jež je v kořenové složce) s výjimkou souborů s názvem Foo.java
.