【发布时间】:2011-11-02 18:39:06
【问题描述】:
我们正在尝试为我们的应用程序构建一个有效的无头 PDE 构建,但在构建过程中编译失败并显示以下消息:
ERROR in C:\...\TimerManager.java
[javac] private final Map<String, ScheduledFuture<?>> activeTimer = new HashMap<>();
[javac] ^^^^^^^
[javac] '<>' operator is not allowed for source level below 1.7
进行以下设置:
-
在 build.properties 文件中设置了以下属性。
CDC-1.1/Foundation-1.1 = ${java.home}/lib/rt.jar JavaSE-1.7 = ${java.home}/lib/rt.jar path.jre = C:/Programme/Java/jre7 javacSource=1.7 javacTarget=1.7 内置插件的最低执行环境为JavaSE-1.7
用于构建的工作区成功使用Java 7。
我们可以使用 eclipse 成功运行我们应用程序的产品。
也许重要的一点是我们在 PDE build.xml 中使用我们的目标平台(包括来自 Eclipse 3.7.0 rcp_sdk 的一些插件和功能)作为 ${baseLocation}。
使用 Eclipse 3.7.1 安装作为 ${baseLocation} 构建成功,但为了生产性使用,我们需要目标平台插件来替换应用程序中的一些 eclipse 插件。
我们通过这个任务在build.xml 中开始构建:
<ant antfile="${eclipse.pdebuild.scripts}productBuild/productBuild.xml" />
baseLocation 是否可能导致使用了错误的编译器? 还是有其他地方可以定义源级别?
我们Eclipse 3.7.1安装中的PDE插件安装完毕,${eclipse.pdebuild.scripts}设置正确,根据Target Platform for PDE ....
【问题讨论】:
-
Eclipse 3.7.0 还不支持 Java 7,所以如果您需要 Java 7,您必须使用 3.7.1 编译。
-
我们使用 eclipse 3.7.1 安装开始构建,使用的 baseLocation 不包含编译器。这意味着在我们的“构建系统”中只有来自 e3.7.1 的编译器能够编译 java 7 代码。问题是为什么它没有。
-
我明白了,我以为你已经知道了,但我想确保这个小细节不是你问题的原因。
-
你的插件
MANIFEST.MF是否指定了JavaSE-1.7的Bundle-RequiredExecutionEnvironment?而您正在使用eclipse371/eclipse -application org.eclipse.ant.core.antRunner -buildfile build.xml构建,其中只有 baseLocation 设置为 eclipse370? -
抱歉我的回复晚了。是的,在发生编译器错误的插件中,执行环境设置为 JavaSE-1.7,并按照您的描述开始构建。
标签: java eclipse eclipse-pde eclipse-indigo