Java-Erstellungspfad festlegen

In diesem Abschnitt wird beschrieben, wie der Java-Erstellungspfad festgelegt wird.  Der Erstellungspfad ist der Klassenpfad, der bei der Erstellung eines Java-Projektes(IJavaProject) verwendet wird. 

Ein Klassenpfad ist einfach ein Bereich von Klassenpfadeinträgen(IClassPathEntry), der die verfügbaren Typen beschreibt.  Die Typen können als Quelle oder in binärem Format vorliegen. Die Reihenfolge der Einträge im Pfad definiert die Suchreihenfolge für das Auflösen von Typen während einer Erstellung.

Der Java-Erstellungspfad ist in der Struktur eines Java-Projektelements wiedergegeben.  Sie können ein Projekt nach den Stammverzeichnissen seiner Paketfragmente(IPackageFragmentRoot) abfragen.  Jeder Klassenpfadeintrag ist einem oder mehreren Stammverzeichnissen für Paketfragmente zugeordnet, die jeweils wiederum eine Gruppe von Paketfragmenten enthalten. 

Diese Erläuterung des Erstellungspfades betrifft nicht den Java-Laufzeitpfad, der separat zum Erstellungspfad definiert werden kann. Eine Erläuterung des Laufzeitklassenpfades können Sie unter  Java-Code ausführen nachlesen.

Erstellungspfad ändern

Sie können den Erstellungspfad eines Projekts programmgestützt unter Verwendung von setRawClasspath für das entsprechende Java-Element des Projekts ändern. Der folgende Code legt den Klassenpfad für eine Projektressource fest:

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

(Hinweis:  Die Verwendung des Begriffes "raw" (= unformatiert) für den Klassenpfad hebt die Tatsache hervor, dass keine Variablen aufgelöst wurden, mit denen Eintragspositionen beschrieben werden.)

Der Java-Erstellungspfad ist in einer Datei namens ".classpath" in der Dateistruktur des Projektes permanent definiert. Diese Datei soll eine gemeinsame Benutzung der Einstellungen von Java-Erstellungspfaden und anderen Einstellungen über ein Quellcoderepository ermöglichen. Diese Datei sollte nicht manuell bearbeitet werden, da sie sonst beschädigt werden könnte.

Klassenpfadeinträge

Klassenpfadeinträge können unter Verwendung von Methoden für Factorydienstprogramme, die unter JavaCore definiert sind, festgelegt werden. Klassenpfadeinträge können auf eines oder mehrere der folgenden Elemente verweisen:

Ausschlussmuster

Einem Klassenpfadquelleneintrag kann ein Ausschlussmuster zugeordnet sein, das die Sichtbarkeit bestimmter Ressourcen eines Quellenordners im Klassenpfad verhindert.  Durch die Verwendung eines Musters können bestimmte Teile der Ressourcenstruktur herausgefiltert werden.  Jeder Ausschlussmusterpfad wird relativ zum Klassenpfadeintrag definiert und verwendet einen ähnlichen Mustermechanismus wie Ant.   Mit Ausschlussmustern können verschachtelte Quellenordner angegeben werden, sofern das äußere Muster das innere Muster ausschließt.

Weitere Details zu Ausschlussmustern können Sie untergetExclusionPatterns() nachlesen.

Die Java-Projekt-API isOnClasspath überprüft die Ausschlussmuster, bevor sie ermittelt, ob eine bestimmte Ressource im Klassenpfad enthalten ist.

Klassenpfad auflösen

Da Sie mit Klassenpfadvariablen und Containern dynamisch gebundene Klassenpfadeinträge definieren können, unterscheidet die Klassenpfad-API zwischen einem unformatierten und einem aufgelösten Klassenpfad.    Der unformatierte Klassenpfad ist derjenige, der im Java-Projekt ursprünglich unter Verwendung von setRawClasspath festgelegt worden ist und kann weiter abgefragt werden, indem das Projekt nach getRawClasspath gefragt wird.  Der aufgelöste Klassenpfad kann unter Verwendung von getResolvedClasspath abgefragt werden. Diese Operation löst die Initialisierung aller Variablen und Container aus, die zur Auflösung des Klassenpfades erforderlich sind.  Viele Java-Modelloperationen bewirken implizit eine Auflösung des Java-Erstellungspfades.  Werden beispielsweise die Stammverzeichnisse für die Paketfragmente eines Projekts berechnet, muss der Pfad aufgelöst werden.

Copyright IBM Corporation und Andere 2000, 2003. Alle Rechte vorbehalten.