I'm使用Mac OS獅子,用java版本的exec()1.6.0_26Java命令調用Runtime.getRuntime()。在Mac OS中
我正在做一個小的應用程序的Mac在Java中有一個主菜單對於用戶來說,他可以選擇幾個選項。
其中之一是使用的.pkg
一切工作正常使用這些命令安裝應用程序:
File instFolder = new File(System.getProperty("user.dir") + "/foldername/appInstaller.pkg");
String s = "open "+ instFolder.toString();
Process p = Runtime.getRuntime().exec(s);
然後我意識到有問題時,文件夾名稱中有空格,或者如果我複製這個帶有所需子文件夾的java文件以「NO NAME」作爲名稱(或帶空格的某個名稱)作爲USB筆驅動器。
由於S1將成爲類似:
開/卷/ NO NAME/FOLDERNAME/appInstaller.pkg
或
開/用戶/用戶1 /桌面/文件夾名稱/ appInstaller.pkg
所以,當你運行該p過程中,該命令將完成,其中第一空間的路徑上出現
開/卷/ NO
或
開/用戶/用戶1 /桌面/文件夾
要嘗試解決這個問題,我改變了的定義這樣的事情:
String s = "open "+ "\"" + instFolder.toString() + "\"";
它停止工作正常。奇怪的是,如果我複製的價值(創建變量s後),並粘貼在終端它的工作原理:
開「/用戶/用戶1 /桌面/文件夾名稱/ appInstaller.pkg」
但從Java運行它不起作用。
請問您能幫我嗎?
謝謝。
嗨@ beny23:謝謝你的建議。他們都很好,但我有一個問題。假設instFolder是錯誤的,所以當我嘗試運行安裝程序時,進程將返回一個exitcode <> 0,所以我可以知道發生了錯誤。我如何檢查與流程建設者? – user897013