2015-03-31 80 views
0

我正在編寫Java RCP應用程序,其中我從用戶輸入文件路徑爲ANT_HOME,然後評估版本以進行驗證。 然而,當我設置ANT_HOME屬性爲系統屬性,評估,因爲ant.bat腳本包含覆蓋命令行中的ANT_HOME屬性

rem %~dp0 is expanded pathname of the current script under NT 
set DEFAULT_ANT_HOME=%~dp0.. 

if "%ANT_HOME%"=="" set ANT_HOME=%DEFAULT_ANT_HOME% 

我並不需要更新我的ANT_HOME但需要重寫值,以便用戶輸入的路徑可以是失敗評估我的應用程序的有效/無效ant版本。

即使在使用我的命令行時也會出現此問題。看下面的截圖。

C:\Users\tunnikrishnan>echo %ANT_HOME% 
E:\tools\apache-ant-1.8.4 

C:\Users\tunnikrishnan>E:\tools\apache-ant-1.6.5\bin\ant.bat -version 
Apache Ant(TM) version 1.8.4 compiled on May 22 2012 
C:\Users\tunnikrishnan> 

有人可以指導我如何才能解決這個問題?

+0

爲什麼不改變你的驗證來檢查%ANT_HOME%/ bin/ant.bat的_existence_而不是執行它以獲取版本? – sudocode 2015-03-31 09:33:14

+0

@sudocode我不需要更新我的ANT_HOME,但需要覆蓋該值,以便可以從我的應用程序對用戶輸入的路徑進行有效/無效的Ant版本評估。 – 2015-03-31 14:31:44

回答

0

更改ProcessBuilder實例的環境變量。

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2"); 
Map<String, String> env = pb.environment(); 
env.put("ANT_HOME", getUserAntHome()); 
pb.redirectErrorStream(true); 
Process p = pb.start(); 

其中getUserAntHome()從用戶輸入中獲得價值。