首页 > 解决方案 > 在 PDE 构建属性文件中将源级别设置为 Java 8

问题描述

我们目前正在尝试将我们的软件解决方案从之前的 Java 6 升级到 Java 8。我们已经成功地让所有东西都在我们的开发机器上运行和构建,但现在卡在我们的构建服务器上,无法构建某些部分偏微分方程。

我们尝试更改 build.properties 文件中的多个设置,即相应功能的清单,但无济于事。我还验证了 rt.jar 是该文件的 java 8 版本。

我们得到的错误是:

Syntax error, annotations are only available if source level is 1.5 or greater

在生成我们设置的问题的特定捆绑包的清单中:

Bundle-RequiredExecutionEnvironment: JavaSE-1.8

在我们设置的构建脚本的构建属性文件中:

bootClasspath=${java.home}/lib/rt.jar
JavaSE-1.8= ${java.home}/lib/rt.jar
path.jre = ${java.home}
javacSource=1.8
JavacTarget=1.8

此外,我们在项目的 Eclipse 设置中设置了特定的 Java 1.8 编译器,而不是工作区默认值。

同样在构建结束时,我得到:

BUILD FAILED
    /QuickBuild/quickbuild-5.0.10/workspace/Eclipse-Builds/Client/buildscripts/buildRCP.xml:20: Java returned: 13

我找不到确切的答案是什么导致返回 13。显然它可能是 64 位 eclipse 和 32 位 JDK 的不匹配,但也可能只是与 Java 1.8 的兼容性错误。在将我的编译器从调用它的 Ant 脚本中设置为详细之后,我能够找到这些行

12:47:37,579 INFO  - [java] Override ignored for property "javacSource"
12:47:37,579 INFO  - [java] Override ignored for property "javacTarget"

显然,编译器忽略了构建的设置,并在低于 1.5 的 java 版本上回退(或使用以前设置的版本)来编译代码。我似乎无法确定这是我仍然缺少的设置,还是我在 build.properties 文件中犯了任何错误。该日志似乎不会为属性文件中的错误输入生成任何错误。有什么方法可以验证我在属性文件中设置的设置是否实际使用,或者我是否缺少设置?

标签: javabuildjava-8propertieseclipse-pde

解决方案


我发现,这些设置中的大多数都没有实际使用,因为 PDE 调用的实际脚本只是调用了 JDT 编译器,其源代码级别在 eclipse 项目的 jdt.core.prefs 文件中指定。由于我们构建服务器上的 eclipse 版本还不支持 Java 8,它无法弄清楚如何编译 Java 8 代码,并且必须以某种方式恢复到低于 1.5 的源代码级别进行编译。在这种情况下,我将不得不查找如何用更新版本替换 JDT 编译器。


推荐阅读