What are Execution Environments?
Why should I set them for my plug-in?
Which Execution Environment should I use?
Check out the table of execution environments in the Eclipse 3.2 Plan. The execution environment listed in the table is what your plug-in is committed to. If there is an error with the table, please send a note to the eclipse-dev mailing list and someone will update the table.
Setting the Execution Environment
- Use build N20060420-0010 or later.
- Right click on your plug-in's MANIFEST.MF and select Open With... -> Plug-in Manifest Editor.
- Select the Overview tab.
- Note the section in the lower left corner entitled Execution Environments.
- Add your appropriate environment(s).
- Save the file.
- Select the link "update the classpath and compiler compliance settings".
- Ensure you have no compile errors in your workspace.
- Release your changes to the repository.
Foundation Class Libraries
Plug-ins that are Foundation 1.0 should in fact list Foundation 1.0 AND J2SE-1.3 in their execution environments. This is because Foundation 1.0 is not a proper subset of 1.3. Listing them both will in essence say that the intersection of the two is valid for use in that plug-in. The situation is the same for Foundation 1.1 and J2SE-1.4.
Getting J9 is the easiest way to get a Foundation JRE to run or compile against.
Compiling Against More Than Is Required
In some cases, a plug-in may require a higher version to compile against, but is able to run perfectly fine against a lower version. For instance, the org.eclipse.osgi bundle will use java.nio.* classes if available. So it must be compiled against J2SE-1.4 but can run on OSGI/Minimum-1.0.
In these cases the EE required to compile against must appear first in the list. So for org.eclipse.osgi, the list (in order) is J2SE-1.4 then OSGI/Minimum-1.0.
Some bundles may think that they require an EE of J2SE-1.4 but really the only special thing that they require from the 1.4 class libraries are the JAXP XML APIs. So in these cases they can be listed as having an EE of J2SE-1.3 because they still will run ok if another bundle is providing the XML APIs.