2011-06-30 51 views
1

我使用Ant以編程方式編譯一組Java文件(使用javac任務)。在Java程序的執行,我得到的錯誤:使用Ant API編譯Java文件時出錯 - 「錯誤啓動現代編譯器」

錯誤啓動現代編譯

然而,當我從命令提示符,而不是通過程序運行相同的build.xml,編譯發生不任何問題。

另一個問題(http://stackoverflow.com/questions/2577790/error-starting-modern-compiler)似乎表明,這個錯誤是因爲當Ant試圖從已經加載的那個版本的javac中使用不同版本的javac進入JVM。但是,我沒有指定要使用的任何特定編譯器,並且文檔(http://ant.apache.org/manual/index.html)似乎表明它應該理想地使用加載到JVM中的javac。

該程序在一些機器上工作,但在其他機器上失敗,機器之間唯一明顯的區別是環境變量。該程序需要在幾臺不同的機器上執行,每臺機器的環境變量略有不同。所以改變這些變量不是一個可接受的解決方案

我想我正在尋找的是一些指定Ant的方法,對於javac任務,使用當前JVM中可用的編譯器。

回答

1

你究竟如何從你的java程序啓動ant?
通過Java API像

File buildFile = new File("build.xml"); 
Project p = new Project(); 
... 

通過ant.bat/ant.sh?
像IDE一樣的IDE?

您是否使用JDK或JRE(javac需要tools.jar)?
你在javac任務中使用fork = true嗎?
你是否通過命令行通過java和ant使用相同的用戶螞蟻?

使用:
螞蟻 - 診斷
螞蟻-debug
螞蟻-verbose

<echoproperties prefix="ant"/> 
<echoproperties prefix="java"/> 

,以獲得更多的細節。

1

在錯誤的機器上,確保Eclipse Java VM指向JAVA_HOME中指定的相同位置。從以前的日子我記得在Eclipse本身中有一些其他的東西可以用tools.jar來擺脫這個問題。當舊奶酪再次開始工作時,我會更新我的答案。