Ant javac目标和源属性之间的差异?
我已经安装了Java6和Java7。如何指定ant使用Java6进行编译?我见过一些设置Java6编译器路径的线程,这些线程是有效的,但我也见过这样的线程,它们在javac任务中设置了一个简单的属性。有时它会说指定目标和源Ant javac目标和源属性之间的差异?,ant,javac,Ant,Javac,我已经安装了Java6和Java7。如何指定ant使用Java6进行编译?我见过一些设置Java6编译器路径的线程,这些线程是有效的,但我也见过这样的线程,它们在javac任务中设置了一个简单的属性。有时它会说指定目标和源 我在这里读过,但仍然不理解这两个属性的用法。从oracle文档来看,似乎source指定了语言规则(例如,“它使用java6规则,因此不会尝试使用资源块”),而target指定了要生成的java版本字节码?文档似乎暗示应该始终设置源代码,但为什么第一个链接中的问题只是说只指定
我在这里读过,但仍然不理解这两个属性的用法。从oracle文档来看,似乎
source
指定了语言规则(例如,“它使用java6规则,因此不会尝试使用资源块”),而target
指定了要生成的java版本字节码?文档似乎暗示应该始终设置源代码,但为什么第一个链接中的问题只是说只指定target=1.6
属性?ANT本身就是一个Java程序,因此它使用Java_HOME环境变量来选择在运行时使用哪个JVM
有些ANT任务允许您选择不同的Java编译器或JRE,而不是默认选项。有关更多详细信息,请参阅ANT文档:
更新
我已经安装了Java6和Java7。如何指定ant使用Java6进行编译
任务控制兼容性设置的源和目标属性。它们不控制ANT使用哪个JDK
它们使现代JDK能够编译旧版本的Java编程语言和/或生成与旧版本的Java运行时兼容的字节码
源代码是标准选项的一部分,目标代码在Oracle的javac命令文档的交叉编译部分中有详细说明:
最后,Oracle制作了以下关于Java兼容性的文档:
它指出Java6和Java7是强兼容的,这在以前的Java版本中并不总是如此
PS
抱歉重复相同的链接,但希望概念更清晰?是的,我或多或少意识到了这一点。在我的第二个链接(OraleJavacDocs)中,它讨论了“目标”和“源”。但我不确定每一个都有什么用。如果我指定源而不是目标,会发生什么?目标而不是来源?谢谢,这个链接很有用。但是要确认,source
指定语言定义/语法,target
指定要生成的字节码?谢谢。是否可以使用1.7功能(例如,使用catch块)编译为1.6代码?通过指定source=1.7
和target=1.6
?@Raekye这就是它在tin上所说的