Ange Java-byggsökväg

I det här avsnittet beskrivs hur du anger Java-byggsökvägen.  Byggsökvägen är den klassökväg som används till att bygga ett Java-projekt (IJavaProject).

En klassökväg är helt enkelt en matris av classpathsposter (IClassPathEntry) som beskriver de typer som är tillgängliga.  De typer som kan uppträda i käll- eller binärform och ordningen av posterna i sökvägen definierar uppslagningsordningen för upplösning av typer under en byggning.

Java-byggsökvägen återspeglas i strukturen för ett Java-projektelement.  Du kan fråga ett projekt om dess paketfragmentrötter (IPackageFragmentRoot).  Varje classpath-post är kopplad till en eller flera paketfragmentrötter, där vardera ytterligare innehåller en uppsättning paketfragment.

Den här diskussionen om byggsökvägarna innefattar inte Java-runtimesökvägen, som kan definieras separat från byggsökvägen.  (Se Köra Java-kod för en diskussion om runtime-klassökväg.)

Ändra byggsökvägen

Du kan med programkod ändra ett projekts byggsökväg med setRawClasspath på motsvarande projekts Java-element.  Följande kod anger klassökväg för en projektresurs:

	IProject project = ... // hämta en projektresurs
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Obs!  Användningen av termen "raw" classpath (klassökväg) används till att framhäva det faktum att alla variabler som används till att beskriva postplatser inte har lösts upp.)

Java-byggsökvägen anges i filen '.classpath' i projektets filstruktur.  Syftet med denna fil är att tillhandahålla ett sätt att dela inställningar för Java-byggsökvägar med andra genom källkodsbehållare. I synnerhet ska den fil inte redigeras manuellt eftersom den kan förstöras.

Classpath-poster

Classpath-poster kan definieras med fabriksmetoder som definieras i JavaCore.  Classpath-poster kan hänvisa till något av följande:

Utelämningsmönster

En classpath-källpost kan tilldelas ett utelämningsmönster, som förhindrar att vissa resurser i en källmapp visas i classpath.  Om du använder ett mönster kan vissa delar av resursträdet filtreras ut.  Varje utelämningsmönsters sökväg anges i förhållande till classpath-posten och använder en mönstermekanism som påminner om Ant.  Utelämningsmönster kan användas till att ange kapslade källmappar så länge som det yttre mönstret inte utelämnar det inre mönstret.

Se getExclusionPatterns för mer information om utelämningsmönster.

Java-projekt-APIt isOnClasspath kontrollerar både medtagnings- och utelämningsmönster innan det fastställer om en viss resurs ligger i classpath.

Anmärkningar:

Medtagningsmönster

En classpath-källpost kan tilldelas ett medtagningsmönster, som explicit anger vilka resurser som ska visas i classpath.  När inga medtagningsmönster anges, innehåller källposten alla relevanta filer i det resursträd som har roten i denna källposts sökväg. Om du anger ett eller flera medtagningsmönster betyder det att bara de angivna delarna av resursträdet ska tas med. Varje angiven sökväg måste vara en relativ sökväg, och tolkas i förhållande till källpostens sökväg. Filmönster är skiftlägeskänsliga. En fil som matchar av en eller flera av dessa mönster tas med i motsvarande paketfragments rot såvida den inte utelämnas av denna posts utelämningsmönster.

Se getExclusionPatterns för en diskussion av syntaxen och semantiken i sökvägsmönster. Frånvaron av medtagningsmönster är semantiskt motsvarande det explicita medtagningsmönstret **.

Java-projekt-APIt isOnClasspath kontrollerar både medtagnings- och utelämningsmönster innan det fastställer om en viss resurs ligger i classpath.

Exempel:

Classpath-upplösning

Eftersom classpath-variabler och -behållare tillåter att du definierar dynamiskt bundna classpath-poster, skiljer classpath-APIt mellan en rå och en upplöst classpath.   Den råa classpathen är den som ursprungligen anges på Java-projektet med setRawClasspath, och kan ytterligare frågas genom att ställa en fråga till projektet om getRawClasspath.  De upplösta classpathen kan frågas med getResolvedClasspath. Den här åtgärden aktiverar initiering av alla variabler och behållare som behövs för att tolka classpathen.  Många Java Model-åtgärder orsakar implicit att Java-byggsökvägen löses.  Ett exempel: om du ska beräkna ett projekts paketfragmentrötter måste byggsökvägen tolkas.