私は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
今回は、コンパイラが問題を検出できます。
Ant がコンパイルする Java ファイルが Java 6 と互換性がない場合に常にコンパイルに失敗する (そして適切なエラー メッセージをスローする) ようにするにはどうすればよいですか?