Het Java-buildpad instellen

In deze sectie wordt beschreven hoe u het Java-buildpad moet instellen. Het buildpad is het klassenpad dat wordt gebruikt voor het bouwen van een Java-project (IJavaProject).

Een klassenpad is gewoon een array van klassenpadgegevens (IClassPathEntry) waarmee de typen worden beschreven die beschikbaar zijn. De typen kunnen voorkomen in een bronvorm of binaire vorm en met de volgorde van de gegevens in het pad wordt de zoekvolgorde gedefinieerd voor het omzetten van typen tijdens een build.

Het Java-buildpad wordt weergegeven in de structuur van een Java-projectelement. U kunt in een project de pakketfragmentenhoofdmappen opvragen (IPackageFragmentRoot). Elk klassenpadgegeven is toegewezen aan een of meer pakketfragmentenhoofdmappen, die elk weer een set pakketfragmenten bevatten.

In deze bespreking van het buildpad wordt geen aandacht besteed aan het Java-runtimepad, dat onafhankelijk van het buildpad kan worden gedefinieerd. (Zie Java-code uitvoeren voor een bespreking van het runtime-klassenpad.)

Het buildpad wijzigen

U kunt het buildpad van een project programmatisch wijzigen met behulp van setRawClasspath in het bijbehorende Java-element van het project. Met de volgende code wordt het klassenpad voor een projectresource ingesteld:

	IProject project = ... // een projectresource ophalen
	IJavaProject javaProject = JavaCore.create(project);
	IClasspathEntry[] newClasspath = ...;
	javaProject.setRawClasspath(newClasspath, someProgressMonitor);
	

(Opmerking: het gebruik van de term "raw" klassenpad wordt gebruikt om het feit te benadrukken dat eventuele variabelen die zijn gebruikt om vermeldingslocaties te beschrijven niet zijn omgezet.)

Het Java-buildpad wordt bevroren in een bestand met de naam '.classpath' in de bestandsstructuur van het project. Het doel van dit bestand is dat de instellingen van het Java-buildpad gemeenschappelijk door anderen kunnen worden gebruikt via een bepaalde broncoderepository. Dit bestand moet vooral niet handmatig worden bewerkt, omdat het beschadigd kan raken.

Klassenpadgegevens

Klassenpadgegevens kunnen worden gedefinieerd met behulp van factorymethoden die zijn gedefinieerd inJavaCore.  Klassenpadgegevens kunnen naar het volgende verwijzen:

Uitsluitingspatronen

Aan een klassenpadbrongegeven kan een uitsluitingspatroon worden toegewezen, waarmee wordt voorkomen dat bepaalde resources in een bronmap zichtbaar zijn in het klassenpad. Als u een patroon gebruikt, kunnen opgegeven gedeelten van de resourcestructuur worden uitgefilterd. Elk uitsluitingspatroon is relatief aan het klassepadgegeven en maakt gebruik aan een patroonmechanisme dat lijkt op Ant. Uitsluitingspatronen kunnen worden gebruikt om geneste bronmappen op te geven zolang het buitenste patroon het binnenste patroon uitsluit.

Zie getExclusionPatterns voor meer informatie over uitsluitingspatronen.

Met de Java-project-API isOnClasspath worden zowel de opname- als uitsluitingspatronen gecontroleerd, voordat vastgesteld of een bepaalde resource zich in het klassenpad bevindt.

Opmerking:

Opnamepatronen

Aan een klassepadbrongegeven kan ook een opnamepatroon worden toegewezen, waarin expliciet wordt gedefinieerd dat resources zichtbaar moeten zijn op het klassenpad. Als er geen opnamepatronen zijn opgegeven, bevat het brongegeven alle relevante bestanden in de resourcestructuur in het pad van dit brongegeven. Als er een om meer uitsluitingspatronen worden opgegeven, betekent dit dat alleen de opgegeven gedeelten van de resourcestructuur moeten worden opgenomen. Elk opgegeven pad moet een relatief pad zijn en wordt relatief aan het pad van dit brongegeven geïnterpreteerd. Bestandspatronen zijn hoofdlettergevoelig. Een bestand dat overeenkomt met een of meer van deze patronen is opgenomen in de pakketfragmenthoofdmap tenzij deze wordt uitgesloten door een of meer van de uitsluitingspatronen van dit gegeven.

Zie getExclusionPatterns voor een bespreking van de syntaxis en de semantiek van padpatronen. De afwezigheid van uitsluitingspatronen is semantisch equivalent aan het expliciete opnamepatroon. **.

Met de Java-project-API isOnClasspath worden zowel de opname- als uitsluitingspatronen gecontroleerd, voordat vastgesteld of een bepaalde resource zich op het klassenpad bevindt.

Voorbeelden:

Klassenpadomzetting

Omdat u met klassenpadvariabelen en containers dynamisch verbonden klassenpadgegevens kunt definiëren, wordt met de klassenpad-API onderscheid gemaakt tussen een onbewerkt en een omgezet klassenpad. Het onbewerkte klassenpad is het pad dat oorspronkelijk is ingesteld in het Java-project met behulp van setRawClasspath. Dit klassenpad kan verder worden opgevraagd als in het project om getRawClasspath wordt gevraagd. Het omgezette klassenpad kan worden opgevraagd met behulp van getResolvedClasspath. Met deze bewerking wordt het initialiseren gestart van eventuele variabelen en containers die nodig zijn om het klassenpad om te zetten. Met veel Java-modelbewerkingen wordt impliciet veroorzaakt dat het Java-buildpad wordt omgezet. Voor het berekenen van de pakketfragmenthoofdmappen van een project is het bijvoorbeeld nodig dat het buildpad wordt omgezet.