5

理由は長くて退屈ですが、Ant スクリプトを実行して、Java 1.4 アプリから Java 1.5 コードをコンパイルする必要があります。ただし、このエラーが発生し続けます。

BUILD FAILED

build.xml:16: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "C:\j2sdk1.4.2_16\jre"

私のコードには、次のものがあります。

Project p = new Project();
p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setProperty("java.home", "C:\Program Files\Java\jdk1.6.0_04");
p.fireBuildStarted();
p.init();
// so on and so forth

しかし、それは無視します。p.setUserProperty(String, String) も試しましたが、それでもうまくいきません。別のプロセスを起動せずにそれを行う方法はありますか?

4

5 に答える 5

6

ビルドファイルのjavacタスクにはありますfork="yes"か?そうでない場合は、java.homeプロパティが何に設定されているかは関係ありません。antは、同じjavaプロセスでjavacメソッドを呼び出そうとしMainます。これは、エラーからJDKではなくJREです。

編集executablejavacタスクのプロパティをバイナリへのフルパスに設定して、タスクjavacに追加compiler="extJavac"してみてください。

于 2009-03-16T21:02:42.207 に答える
0

バックスラッシュを2倍にするべきではありませんか?

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");
于 2009-03-16T20:58:02.577 に答える
0

環境変数 JAVA_HOME と ANT_HOME を正しく設定しましたか? コード経由で設定している場合でも、動作するはずです。

また、%JAVA_HOME%\bin ディレクトリ %ANT_HOME%\bin が環境変数「パス」に含まれているかどうかも確認してください。

あなたの問題は、%JAVA_HOME%\bin が envt に存在しないことにあるようです。ただし、変数パス。

于 2009-03-17T05:44:11.860 に答える
0

これを機能させる別の方法は、「tools.jar」をクラスパスに追加することです。javac コンパイラは、この jar 内に含まれています。

java -cp $JAVA_HOME/lib/tools.jar ...

于 2013-11-05T06:36:35.307 に答える