2012-12-03 32 views
0

我想在Java中執行程序,其路徑爲 ,由自定義系統變量(「CHROME」)定義。Java ProcessBuilder和Windows系統變量

new ProcessBuilder("CHROME").start(); 

Win7的: 工作正常(點應用程序數據\本地)

贏Vista的: 什麼也不做(指向程序文件)

什麼我需要做的,要讓它運行與Vista?

+1

'新的ProcessBuilder( 「鉻」)開始();'這是一個非常簡單的方式開始了'Process'。不幸的是,結合'簡單'和'過程',它通常會失敗。請參閱[本文](http://www.javaworld.com/jw-12-2000/jw-1229-traps.html)並忽略它在標題中包含'Runtime.exex()'的事實 - 建議全部同樣適用於'ProcessBuilder'。實施所有的建議,如果這本身並沒有解決問題,至少它會提供有用的信息。使用['redirectErrorStream()'](http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html#redirectErrorStream%28%29)。 –

+0

這只是我最小的代碼示例,我實際上使用參數列表,設置工作路徑等...不要擔心;-) – Schifty

回答

2

如果我正確地理解了你,CHROME是一個包含應用程序路徑的系統變量。如果是的話,你可以嘗試爲

String path = System.getenv("CHROME"); 
new ProcessBuilder(path).start(); 

Runtime.getRuntime().exec(path); 
+0

我會嘗試,但我需要做一些解析,因爲getenv是可選的:( – Schifty

+0

謝謝,它的作品在Vista和Windows 7 :) – Schifty

0

this question建議從cmd.exe運行程序,即

new ProcessBuilder("cmd.exe", "%CHROME%"); 

這應該工作,只要%CHROME%是主Java程序傳遞給子進程的environmente。

+0

我已經嘗試過,不喜歡這個解決方案,因爲你可以' t終止或等待已啓動的進程。我也試過批處理文件.... – Schifty