3

私は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 と互換性がない場合に常にコンパイルに失敗する (そして適切なエラー メッセージをスローする) ようにするにはどうすればよいですか?

4

1 に答える 1