De compilatieomgeving instellen

Standaard worden uw bundels gecompileerd door de tool waardoor JRE wordt gebruikt om de build uit te voeren en waarbij de bron- en doelniveaus zijn ingesteld op 1.3 en 1.2.

PDE Build is in staat om de JRE die tijdens de compilatie wordt gebruikt te configureren per bundel. Als u hiervan wilt profiteren, moet u eerst aan PDE Build doorgeven welke JRE's u beschikbaar hebt.  In uw buildconfiguratiebestand build.properties stelt u de eigenschappen zo in dat deze naar elk van uw geïnstalleerde JRE's wijzen.  De sjabloon die wordt geleverd in org.eclipse.pde.build/templates/headless-build bevat een lijst met omgevingen die zijn uitgeschakeld. Schakel de eigenschappen in waarvoor u JRE's hebt en stel de waarde in op de set JAR's die bij het opstartklassenpad horen.  Als u bijvoorbeeld de volgende eigenschap instelt:

J2SE-1.5=C:/Java/1.5/jre/lib/rt.jar;C:/Java/1.5/jre/lib/jsse.jar

worden bundels die Java 1.5 vereisen, gecompileerd ten opzichte van rt.jar en jsse.jar.  De namen van de eigenschappen moeten overeenkomen met de namen van de omgevingen die bekend zijn bij PDE Build.   PDE Build stelt automatisch de bron- en doelniveaus voor elke omgeving in.  De omgevingen die PDE Build kent en hun bijbehorende bron-/doelniveaus zijn als volgt:

Omgeving
Bron
Doel
CDC-1.0/Foundation-1.0
1.3
1.1
CDC-1.1/Foundation-1.1
1.3
1.2
OSGi/Minimum-1.0
1.3
1.1
OSGi/Minimum-1.1
1.3
1.2
JRE-1.1
1.1
1.1
J2SE-1.2
1.2
1.1
J2SE-1.3
1.3
1.1
J2SE-1.4
1.3
1.2
J2SE-1.5
1.5
1.5
JavaSE-1.6
1.6
1.6
PersonalJava-1.1
1.1
1.1
PersonalJava-1.2
1.1
1.1
CDC-1.0/PersonalBasis-1.0
1.3
1.1
CDC-1.0/PersonalJava-1.0
1.3
1.1
CDC-1.1/PersonalBasis-1.1
1.3
1.2
CDC-1.1/PersonalJava-1.1
1.3
1.2

De omgeving kiezen voor uw bundel

Er zijn twee instellingen die van invloed zijn op de omgeving die wordt gebruikt om uw bundel te compileren.  Een ervan is de manifestheader Bundle-RequiredExecutionEnvironment.  Deze header wordt gevormd door een lijst met omgevingen waarin uw bundel kan worden uitgevoerd.  Uw bundel mag alleen methoden gebruiken die zich in de juiste subset bevinden van alle omgevingen die worden vermeld.  Het is wenselijk dat uw compilatieomgeving zo nauw mogelijk overeenkomt met uw verwerkingsomgeving.

De tweede instelling is de eigenschap jre.compilation.profile van het bestand build.properties van uw bundel.  De waarde van deze eigenschap moet de voorkeursomgeving voor het compileren van deze bundel zijn als de Bundle-RequiredExecutionEnvironment-lijst niet voldoet.

Deze twee instellingen samen vormen een lijst met omgevingen, eerst jre.compilation.profile, en vervolgens de omgevingen uit Bundle-RequiredExecutionEnvironment.  De eerste omgeving in deze lijst die beschikbaar is in uw buildconfiguratie (zie bovenstaande sectie) wordt gebruikt voor het compileren van uw bundel.

Voorbeeld:
<buildDirectory>/plugins/bundleA/
META-INF/manifest.mf: Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0, J2SE-1.3
build.properties:  jre.compilation.profile=J2SE-1.4

<buildConfiguration>/
build.properties:  J2SE-1.3=C:/Java1.3/jre/lib/rt.jar;C:/Java1.3/jre/lib/i18n.jar
J2SE-1.4=C:/Java1.4/jre/lib/rt.jar;C:/Java1.4/jre/lib/jsse.jar

In de bovenstaande instelling is de lijst met omgevingen die in overweging worden genomen (in de juiste volgorde): J2SE-1.4,  CDC-1.0/Foundation-1.0, J2SE-1.3.  De bundel kan worden uitgevoerd op CDC/Foundation en J2SE-1.3, maar moet om een bepaalde reden,  worden gecompileerd met J2SE-1.4.  In dit geval wordt J2SE-1.4 ingesteld in de buildconfiguratie en wordt deze als eerste vermeld in de lijst met omgevingen, zodat deze wordt gebruikt om de bundel te kopiëren.  De bron- en doelniveaus die worden gebruikt, zijn in dit geval 1.3 en 1.2.  Als in plaats daarvan de buildconfiguratie alleen J2SE-1.3 en niet J2SE-1.4 heeft gedefinieerd, zou J2SE-1.3 de enige omgeving in de lijst zijn waarvoor een JRE beschikbaar is, en zou deze worden gebruikt om de bundel te compileren.  In dat geval zouden de bron- en doelniveaus 1.3 en 1.1 zijn.

Compilatiewaarden expliciet instellen

Als om een bepaalde reden het gebruik van de omgevingen zoals hierboven wordt beschreven niet tot de gewenste instellingen leidt, is het mogelijk dat een bundel de instellingen die deze vereist expliciet vermeldt.  Als u bijvoorbeeld een bundel hebt die J2SE-1.4 met bevestigingen gebruikt, moeten de bron- en doelniveaus 1.4 zijn, in plaats van de standaardwaarden 1.3 en 1.2.

Als u de Java-bron- en doelniveaus expliciet wilt instellen, moet de bundel de eigenschappen javacSource en javacTarget in het bestand build.properties instellen.  Deze eigenschappen vervangen de waarden die zijn afgeleid vanuit de omgevingsinstellingen.

Evenzo, als u de eigenschap bootClasspath in het bestand build.properties van de bundel instelt, wordt de set van JAR-bestanden op basis waarvan van de bundel wordt gecompileerd, vervangen.