質問

理由は長く退屈ですが、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)も試しましたが、それでもうまくいきません。別のプロセスを起動せずにそれを行う方法はありますか?

役に立ちましたか?

解決

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

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

他のヒント

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

p.setProperty("java.home", "C:\\Program Files\\Java\\jdk1.6.0_04");

環境変数JAVA_HOMEおよびANT_HOMEを適切に設定しましたか?コード経由で設定している場合でも動作します。

また、%JAVA_HOME%\ binディレクトリ%ANT_HOME%\ binが環境変数 'path'にある必要があるかどうかを確認します。

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

この作業を行う別の方法は、「tools.jar」をクラスパスに追加することです。 javacコンパイラはこのjarに含まれています。

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

javacオプションはtools.jarで利用可能です。 Eclipseでは、JRE HOMEがjdkを指している場合でも、すべてのシステムライブラリはJDK_HOME \ jre \ libを指します。 tools.jarはありません。 tools.jarを外部Jarファイルとして追加できます。これで問題が解決するはずです

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top