2012-11-01 103 views
1

我一直在嘗試使用下面的代碼使用Java的代碼執行Microsoft Excel中:的Java在Java程序中執行一個程序的Mac

Process pro = Runtime.getRuntime().exec("open -a Microsoft"+"\\"+" "+"Excel"); 
pro.waitFor(); 

當我打印此命令時,正是我用手工在命令行中啓動Excel,但是當我想用java運行時啓動它時,它不起作用。我知道在Microsoft Windows命令行中不存在這樣的問題,但在Mac中有沒有其他方法可以通過使用java代碼來啓動程序?

我也試圖通過使用相同的代碼就像啓動一個計算器:

Process pro = Runtime.getRuntime().exec("open -a Calculator"); 

它完美的作品,是不是因爲「微軟」和「創先爭優」的空間?

回答

2

java.lang.Runtime.exec(String)將命令行解析爲單個參數本身,並且不知道任何關於shell元字符的內容,例如使用\引用應該插入參數的空格字符。

試着做了分裂的說法,而不是自己:

String[] cmdline = { "open", "-a", "Microsoft Excel" }; 
Runtime.getRuntime.exec(cmdline); 

注意,你不應該需要(或能夠)用一個反斜槓逃脫的第三個元素的空間。當您在命令行中鍵入命令時,該反斜槓被外殼程序佔用,因爲它將線路分成參數以傳遞給open程序,但Runtime.exec()直接啓動進程而無需外殼的干預,所以如果您在那裏放一個反斜槓,open就能看到它,並且會被它弄糊塗。

+0

使用字符串數組確實解決了我的問題,謝謝。 –