3

重複の可能性:
Ant javac タスクでコンパイラー属性をオーバーライドする

Ant では、build.compilerオプションまたはtaskの属性をどのように正確に使用すればよいですか?<javac>compiler

を設定しようとcompiler="javac1.5"しましたが、作成されたクラス ファイルを 16 進エディタで開いたときに、JDK 1.5 インストールを指すよう32に設定するまで、クラス バージョンは 16 進 (バージョン 1.6)として表示されていました。JAVA_HOME(それまでは、私の JDK 1.6 インストールを指していました。) したがって、属性にJAVA_HOME取って代わるように見えcompilerます — その場合、その属性の目的は何ですか?

および属性正しく機能しているようですsource。バージョンを指定すると、結果のクラスファイルには正しいバージョンが含まれています。targettarget

4

1 に答える 1

6

この属性の目的は、標準の JDK コンパイラの ようなもの、gcjまたはその代わりに何かを選択できるようにすることです。(など) は、標準コンパイラである の単なるエイリアスであり、 のデフォルト値が実行中の JDKと一致するというルールをサポートするために定義されています (したがって、デフォルトは1.3 以降および1.2 以下です)。jikesjavac1.5javac1.6modernbuild.compilerjavac1.xxmodernclassic

1.5 で実行されるクラスをコンパイルするsource="1.5" target="1.5"場合は、1.6 以降で導入されたメソッドを呼び出さないように、ブートストラップ クラスパスを使用し、1.5 クラス ライブラリを指すように設定する必要があります。

于 2012-11-01T15:04:58.327 に答える