Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant javac目标和源属性之间的差异?_Ant_Javac - Fatal编程技术网

Ant javac目标和源属性之间的差异?

Ant javac目标和源属性之间的差异?,ant,javac,Ant,Javac,我已经安装了Java6和Java7。如何指定ant使用Java6进行编译?我见过一些设置Java6编译器路径的线程,这些线程是有效的,但我也见过这样的线程,它们在javac任务中设置了一个简单的属性。有时它会说指定目标和源 我在这里读过,但仍然不理解这两个属性的用法。从oracle文档来看,似乎source指定了语言规则(例如,“它使用java6规则,因此不会尝试使用资源块”),而target指定了要生成的java版本字节码?文档似乎暗示应该始终设置源代码,但为什么第一个链接中的问题只是说只指定

我已经安装了Java6和Java7。如何指定ant使用Java6进行编译?我见过一些设置Java6编译器路径的线程,这些线程是有效的,但我也见过这样的线程,它们在javac任务中设置了一个简单的属性。有时它会说指定目标和源


我在这里读过,但仍然不理解这两个属性的用法。从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上所说的