2011-03-29 49 views
1

我必須從我的Java應用程序中爲我的Mac OS X顯示系統信息。如何使用Java應用程序在Mac OS X上打開System Profiler.app?

我創建了一個按鈕,並嘗試執行以下操作:

private static String[] sysInfoPathMac = 
    {"/usr/bin/open", "'/Applications/Utilities/System Profiler.app'"}; 

在按鈕的單擊事件我執行以下命令:

Runtime.getRuntime().exec(sysInfoPathMac); 

,我沒有得到任何東西,一旦按鈕被點擊。它不會拋出任何錯誤,也不會運行系統分析器。

我究竟在做什麼錯誤以及如何完成它?

+0

也許逃避的空間,像這樣:'「系統\\ Profiler.app」' – Jeremy 2011-03-29 19:56:07

+0

試圖這樣做,但沒有運氣。 – 2011-03-29 20:43:12

回答

1

刪除單引號。當您從shell運行命令時,需要引號,因爲參數中有一個空格。從Java開始進程時,這不是問題,因爲數組的每個元素都被視爲單獨的參數,而不管它是否包含空格。

String[] command = {"/usr/bin/open", "/Applications/Utilities/System Profiler.app"}; 
Process proc = Runtime.getRuntime().exec(command); 
int resultCode = proc.waitFor(); 
if (resultCode != 0) { 
    throw new Exception("failed to open system profiler"); 
} 

注意,在一般使用的Runtime.exec()的時候,因爲「打開」命令沒有你要消耗輸出和錯誤流以避免死鎖(雖然在這種情況下,它不是一個問題產生很多產出)。欲瞭解更多關於這個問題看看邁克爾Daconta的文章「當的Runtime.exec()不會」 http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html

+0

謝謝......它像一個魅力:) – 2011-03-29 20:51:40

相關問題