私は1つの問題に直面しています。私のマシン上でjavac.exe
の名前を変更し、ant javac
タスクが正常に動作することに気付きました。ant javacタスクで使用されているjavac.exeはどれですか?
javac.exeの入手先は誰にも分かりませんか?あなたはhereを起動しようとすると、グローバルbuild.compiler
プロパティで設定されているかどうか確認することができ
私は1つの問題に直面しています。私のマシン上でjavac.exe
の名前を変更し、ant javac
タスクが正常に動作することに気付きました。ant javacタスクで使用されているjavac.exeはどれですか?
javac.exeの入手先は誰にも分かりませんか?あなたはhereを起動しようとすると、グローバルbuild.compiler
プロパティで設定されているかどうか確認することができ
、デフォルトのAntでこのコードを直接Javaコンパイラのクラスを実行しようとしていること、私は信じて、実際にどこか
を指している場合があります。
try {
Class c = Class.forName ("com.sun.tools.javac.Main");
Object compiler = c.newInstance();
Method compile = c.getMethod ("compile",
new Class [] {(new String [] {}).getClass()});
int result = ((Integer) compile.invoke
(compiler, new Object[] {cmd.getArguments()}))
.intValue();
return (result == MODERN_COMPILER_SUCCESS);
} catch (Exception ex) {
if (ex instanceof BuildException) {
throw (BuildException) ex;
} else {
throw new BuildException("Error starting modern compiler",
ex, location);
}
}
コードがhereから来ました。
つまり、ライブラリtools.jarがAntの現在のクラスパス上にある場合、クラスを取得して起動します。この結果、javac.exeの名前を任意の名前に変更することができます。これは動作します。だからあなたの質問に答えるために、実際には "javac.exe"のどれも実行しません。
ありjavacタスクの他の実装がありますが、私は、これはすべてのコンパイラ1.3以降
これは単離されていません。私はTomcatがJSPをコンパイルするのと同じことをやっていると思います。 –
のデフォルトの一つだと思いますが、その[ドキュメント]を見てみました(http://ant.apache.org/ manual/Tasks/javac.html)? –
おそらくそれ自身のコピーが付属しています。好奇心のために、なぜjavacの名前を変更しましたか? –
システムパスとJavaパスを確認してください。それはそこからjavac.exeを拾うかもしれません。似たようなことが私に起こった。私はjdk6とjdk7をインストールしましたが、jdk7のbinフォルダはシステムパスにありましたので、そこからjava.exeを選んでいました。 – Bharat