2012-05-10 12 views
3

私は1つの問題に直面しています。私のマシン上でjavac.exeの名前を変更し、ant javacタスクが正常に動作することに気付きました。ant javacタスクで使用されているjavac.exeはどれですか?

javac.exeの入手先は誰にも分かりませんか?あなたはhereを起動しようとすると、グローバルbuild.compilerプロパティで設定されているかどうか確認することができ

+1

のデフォルトの一つだと思いますが、その[ドキュメント]を見てみました(http://ant.apache.org/ manual/Tasks/javac.html)? –

+3

おそらくそれ自身のコピーが付属しています。好奇心のために、なぜjavacの名前を変更しましたか? –

+2

システムパスとJavaパスを確認してください。それはそこからjavac.exeを拾うかもしれません。似たようなことが私に起こった。私はjdk6とjdk7をインストールしましたが、jdk7のbinフォルダはシステムパスにありましたので、そこからjava.exeを選んでいました。 – Bharat

答えて

-1

、デフォルトのAntでこのコードを直接Javaコンパイラのクラスを実行しようとしていること、私は信じて、実際にどこか

6

を指している場合があります。

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以降

+0

これは単離されていません。私はTomcatがJSPをコンパイルするのと同じことをやっていると思います。 –

関連する問題