设置编译环境

缺省情况下,捆绑软件是使用用来运行构建的 JRE 编译的,并且将把源代码级别和目标级别分别设置为 1.3 和 1.2。

“PDE 构建”能够配置每一个捆绑软件在编译期间要使用的 JRE。为了利用此功能,第一项操作是将可用的 JRE 告知“PDE 构建”。在构建配置的 build.properties 文件中,设置属性以指向每个已安装的 JRE。在 org.eclipse.pde.build/templates/headless-build 中提供的模板 build.properties 中,已将环境列表注释掉。您只需将可用 JRE 的对应属性取消注释并将值设置为属于根类路径的 JAR 集合即可。例如,设置以下属性:

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

将根据 rt.jar 和 jsse.jar 编译需要 Java 1.5 的捆绑软件。属性名应该与“PDE 构建”所知的环境名匹配。“PDE 构建”将自动设置每个环境的源代码级别和目标级别。“PDE 构建”所知的环境及其相关源代码级别/目标级别如下所示:

环境

目标
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

为捆绑软件选择环境

有两个设置会影响用来编译捆绑软件的环境。其中一个是清单头 Bundle-RequiredExecutionEnvironment。此头是能够运行捆绑软件的环境列表。捆绑软件只应该使用所列示的所有环境的正确子集中的方法。最好使编译环境尽可能地与运行时环境匹配。

第二个设置是捆绑软件的 build.properties 文件中的 jre.compilation.profile 属性。此属性的值应该是 Bundle-RequiredExecutionEnvironment 列表无法满足需要时用于编译此捆绑软件的首选环境。

这两个设置共同构成环境列表,即首先使用 jre.compilation.profile,然后使用 Bundle-RequiredExecutionEnvironment 中的环境。将使用此列表中的第一个在构建配置中可用的环境(请参阅上一节)来编译捆绑软件。

示例:
<构建目录>/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

<构建配置>/
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

在以上设置中,考虑的环境列表及其顺序是:J2SE-1.4、CDC-1.0/Foundation-1.0 和 J2SE-1.3。此捆绑软件可以在 CDC/Foundation 和 J2SE-1.3 上运行,但由于某种原因,它应该使用 J2SE-1.4 编译。在本例中,在构建配置中设置了 J2SE-1.4,并且 J2SE-1.4 在环境列表的开头,因此将使用它来编译此捆绑软件。在本例中,使用的源代码级别和目标级别分别是 1.3 和 1.2。如果构建配置仅定义了 J2SE-1.3 而未定义 J2SE-1.4,则 J2SE-1.3 将是带有可用 JRE 的环境列表中的唯一环境,因此将使用它来编译此捆绑软件。在那种情况下,源代码级别和目标级别将分别是 1.3 和 1.1。

显式地设置编译值

如果某种原因导致使用上述环境无法产生期望的设置结果,则捆绑软件可以显式地列示所需的设置。例如,如果捆绑软件使用 J2SE-1.4,并使用了断言功能,则源代码级别和目标级别必须是 1.4,而不能是缺省值 1.3 和 1.2。

要显式地设置 Java 源代码级别和目标级别,捆绑软件应该在它的 build.properties 文件中设置 javacSourcejavacTarget 属性。这些属性将覆盖环境设置所派生的值。

同样,在捆绑软件的 build.properties 文件中设置 bootClasspath 属性将覆盖编译捆绑软件时所根据的 JAR 集合。