【问题标题】:Ant javac difference between target and source attributes?Ant javac目标和源属性之间的区别?
【发布时间】:2013-05-10 18:48:08
【问题描述】:

我安装了 Java 6 和 7。如何指定ant 使用Java 6 编译?我已经看到了一些设置 java 6 编译器路径的线程,并且有效,但我也看到了像 Setting the target version of Java in ant javac 这样的线程,它在 javac 任务中设置了一个简单的属性。然后有时它会说指定目标和源。

看了这里http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/javac.html#examples 但是还是不明白这两个属性的用途。从 oracle 文档看来,source 似乎指定了语言规则(例如“这使用 java6 规则,因此不会有任何 try-with-resource 块”),而target 指定了 java-version-bytecode生成?文档似乎暗示应该始终设置source,但为什么第一个链接中的问题只是说指定target=1.6 属性?

【问题讨论】:

    标签: ant javac


    【解决方案1】:

    ANT 本身是一个 Java 程序,因此它使用 JAVA_HOME 环境变量来选择在运行时使用哪个 JVM。

    一些 ANT 任务允许您选择不同的 Java 编译器或 JRE,覆盖默认选项。有关详细信息,请参阅 ANT 文档:

    更新

    我安装了 Java 6 和 7。如何指定ant使用Java 6编译?

    javac 任务控制兼容性设置的 sourcestarget 属性。他们不控制 ANT 使用哪个 JDK。

    它们使现代 JDK 能够编译旧版本的 Java 编程语言和/或生成与旧版本的 Java 运行时兼容的字节码。

    sources 是标准选项的一部分,targets 在 Oracle 的 javac 命令文档的交叉编译部分中有详细说明:

    最后,Oracle 制作了以下关于 Java 兼容性的文档:

    它指出 Java 6 和 Java 7 高度兼容,而在以前的 Java 版本中并非总是如此。

    附言 抱歉重复相同的链接,但希望概念更清晰?

    【讨论】:

    • 是的,我或多或少意识到这一点。在我的第二个链接(orale javac 文档)中,它谈到了“目标”和“源”。但是我不确定每个的用途是什么。如果我指定源但不指定目标会发生什么?目标而不是来源?
    • 谢谢,该链接很有用。但要确认一下,source 指定语言定义/语法,target 指定生成什么字节码?
    • 谢谢。是否可以使用 1.7 功能(例如 try-with-catch 块)编译为 1.6 代码?通过指定 source=1.7 和 target=1.6?
    • @Raekye 这就是它在锡上写的! :-)
    猜你喜欢
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 2012-10-03
    • 2011-06-22
    • 2012-08-27
    • 2011-02-02
    相关资源
    最近更新 更多