我使用 JDK 7。但是,我想将一个类编译为 Java 6 标准(意味着它必须能够在 JRE 6 上运行)。我的 Ant 编译命令如下:
<target name="myAntTarget">
<javac srcdir="${mysrc.dir}"
destdir="${mydest.dir}"
source="1.6"
target="1.6"
deprecation="on"
debug="on"
classpathref="mypath"
includeAntRuntime="false"
>
<include name="com/mypackage/MyClassName.java" />
</javac>
</target>
奇怪的是,Java 6 标准并没有得到一致的执行。
当我写
ProcessBuilder.Redirect xxx = ProcessBuilder.Redirect.INHERIT;
System.out.println(xxx.toString());
代码已成功编译(意外),尽管 ProcessBuilder.Redirect 仅在 Java 7 之后才包含在 Java 中(http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.Redirect。 html ). 所以它肯定不能在 Java 6 中正常运行。
然而,当我写
try (BufferedReader br =
new BufferedReader(new FileReader("C:/myrandomfile.pdf"))) {
final String sss = br.readLine();
System.out.println(sss);
}
代码无法编译。错误消息(来自 Ant)是
error: try-with-resources is not supported in -source 1.6
这一次,编译器可以检测到问题。
每当它编译的 java 文件与 Java 6 不兼容时,如何确保 Ant 始终无法编译(并抛出适当的错误消息)?