使用Java1.6在EclipseMars上运行Ant

使用Java1.6在EclipseMars上运行Ant,java,eclipse,ant,eclipse-mars,Java,Eclipse,Ant,Eclipse Mars,我下载了最新版本的Eclipse(Mars),并在Eclipse.ini文件中将所需的Java版本更改为1.6,因为我的项目使用Java 1.6 我将Eclipse中安装的JRE配置为使用Java1.6。 但当我尝试执行ant目标时,它会创建一个错误: 不支持低于1.7的JRE版本 由于我目前无法升级到Java 1.7,所以在Mars版本中使用Java 1.6有什么解决方法吗?没有,您不能选择JDK1.6或更低版本,因为Eclipse Mars仅在Java>=1.7的情况下运行。 请参阅链接。运

我下载了最新版本的Eclipse(Mars),并在Eclipse.ini文件中将所需的Java版本更改为1.6,因为我的项目使用Java 1.6

我将Eclipse中安装的JRE配置为使用Java1.6。 但当我尝试执行ant目标时,它会创建一个错误:

不支持低于1.7的JRE版本


由于我目前无法升级到Java 1.7,所以在Mars版本中使用Java 1.6有什么解决方法吗?

没有,您不能选择JDK1.6或更低版本,因为Eclipse Mars仅在Java>=1.7的情况下运行。
请参阅链接。

运行Eclipse所用的Java不必与用于项目的Java相同。您必须使用Java7(或8)运行EclipseMars,但您可以在项目中使用Java6


在“Java>已安装JRE”的首选项中告诉Eclipse Java 6,并将其设置为默认值(或在单个项目中选择)。

请查看
参考,并将以下属性添加到
-任务中:
compiler=“javac1.6”
source=“1.6”
target=“1.6”
executable=“[path-to-jdk-1.6/bin/javac]”
fork=“true”
taskname=“javac1.6”

升级到EclipseMars后,我遇到了同样的问题

我通过将项目外部工具配置的运行时环境更改为JDK7解决了这个问题

我假设您知道如何将JDK7添加到eclipse中已安装的jre中

打开外部工具配置。。。然后将JRE更改为JDK 1.7

然后更改JRE

但是这将产生另一个问题,编译的jar将在JDK 7中,这在使用JDK6的生产服务器上不起作用

要解决这个问题,只需将任务中的target属性更改为1.6

根据@dag和@Chris的建议,这里更新了ant javac任务。

我们使用一个新的解决方案解决了这个问题。对于EclipseNeon,请参见第一页的评论。

我最近遇到了这个问题,因为我的机器上有Java8,使用ElicpseOxy并试图使用Ant构建Java6项目。我使用了上面的一些建议,但在Ant构建过程中也遇到了一些奇怪的行为。最后它成功了,我的步骤如下:

1) Java home最终指向Java 8

2) 在Ant脚本中设置@Chris建议的值

3) 不要更改Ant运行时JRE,我的JRE保留在8,事实上,如果我将其更改为6,则不会运行Ant构建

4) 项目设置生成路径和编译器级别均设置为6

5) 运行构建


这产生了一个适合我的Java 6级别的构建。

我在JRE 1.8上运行了Eclipse Oxygen,但构建了一些旧的1.7项目,并且
jdk1.7.0(40
作为单独的JRE安装并在工具外部配置中设置,但仍然出现了“JRE小于1.8不受支持”错误

对我来说,解决这个问题的方法就是直接更新构建xml配置,特别是如果您有另一个可以复制的项目

具体而言,我访问了以下发布配置:

workspace/.metadata/.plugins/org.eclipse.debug.core/.launches
并编辑了相关的
…build.xml.launch
文件,替换为:

<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/jdk1.7.0_40"/>

与:


并重新启动Eclipse以获取它


不知道这在Eclipse支持方面是前进还是后退,但它解决了我的问题。

添加大于1.7的新JRE版本

我的解决方案是下载与JRE 6/7兼容的ant版本,并在“外部工具配置”中更改ant主页路径以匹配我下载的(ClassPath>ant Home)


运行Eclipse所用的Java不必与用于项目的Java相同。必须使用Java 7(或8)运行Eclipse但是您可以在项目中使用Java 6。在这个stackoverflow问题中讨论了一个类似的问题:我确实在已安装的JRE中设置了1.6版本,但当试图通过Eclipseant target执行ant目标以编译和部署我的build.xml项目时,它不起作用。我认为这是一个错误。我今天也遇到了这个问题。使用Eclipse和JDK8,项目是为JDK 6编译的,这一点都没有问题。但是当尝试在JDK 6中运行ant(作为外部工具配置)时(我还将ant运行时更改为外部运行时)显示了所描述的错误消息。Eclipse需求的更好参考是-请参见提示下的内容。但开发人员究竟为什么需要使用下线JVM来运行其IDE?即使在Java 8上运行Eclipse,您仍然可以为Java 6开发软件(请参见greg-449的回答)“这一切都是关于版本、发行版和他们将要支持的平台的。”开发人员究竟为什么要使用它“-因为我们为拥有大量遗留应用程序的大公司工作。而且每项更改都必须通过适当的工程更改控制。@BlessedGeek现在面临着同样的问题。毕竟,这与使用“本机”1.6 JDK编译代码并不完全相同,因此您需要按照Chris的建议添加
executable
属性。这是一个很好的建议,我可以更新我的答案来添加@Chris answer的ant属性吗?我想我的答案包括两个方面:用JRE7运行Ant(取消eclipse使用的JRE链接)和解决生成字节码版本的问题。@AmrElAdawy:亲爱的,我已经听从了你宝贵的建议,但我的问题仍然存在;((我的场景是STS 4.1、jdk 8,但我想用Ant使用jdk 7进行编译)。在MANIFEST.MF文件中,我必须在“Created By:”info jdk 1.8或jdk 1.7中找到什么?请注意,这是不鼓励的,因此答案应该是搜索解决方案的终点(而不是另一个参考的中途停留,它往往会随着时间的推移而过时)请考虑在这里添加一个独立的概要,保持链接作为参考。
<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_NAME" value="jdk1.7.0_40"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_INSTALL_TYPE_ID" value="org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType"/>