2015-11-20 219 views
-2

我試圖自動化一個進程,其中一個需要做一個ant構建。我已經設置了所有的環境變量。輸入命令直接進入CMD作品:Java ProcessBuilder無法識別java_home路徑

我的build.xml有這樣的一些屬性:在CMD

<property name="java.home" value="${env.JAVA_HOME}"/> 
<property name="java.compiler.path" value="${JAVA_HOME}\bin\javac"/> 
<echo> ${java.home} </echo> 
<echo> ${java.compiler.path} </echo> 

,並呼籲「蟻族」將呼應JDK的目錄。然而,通過的ProcessBuilder

CommandUtils.execute("\"c:\\Program Files (x86)\\Ant\\bin\\ant\""); 
//inside execute() { pb = new ProcessBuilder("cmd", "/c", command);....} 

調用Ant將回聲$ {java.home}和$ {} java.compiler.path字面上。 是否有任何更改可以指向java路徑,以便ProcessBuilder能夠識別java路徑?

+0

它說「ProcessBuilder」替代了環境變量? – EJP

+0

主要問題呢?當我做螞蟻時,我認爲這不是造成build.xml問題的原因。 $ {JAVA_HOME}回顯正確的目錄,但$ {env.JAVA_HOME}回顯$ {env.JAVA_HOME}。所以我無法通過ProcessBuilder運行ant構建? – user3758745

+0

那是因爲你的java home指向JRE而不是JDK所以沒有編譯器(在tools.jar中)在classpath – Jan

回答

1

使用%代替環境變量將不起作用。改爲使用System.getenv()中的值。

對於螞蟻錯誤:您需要在您的類路徑中使用編譯器。 Tools.jar不包含在JRE中,僅在JDK中

+0

主要問題呢?當我做螞蟻時,我認爲這不是造成build.xml問題的原因。 $ {JAVA_HOME}回顯正確的目錄,但$ {env.JAVA_HOME}回顯$ {env.JAVA_HOME}。所以我無法通過ProcessBuilder運行ant構建? – user3758745