我在從OS X 10.8上的Java應用程序運行外部腳本時遇到了實際問題。它適用於Windows,所以不知道我在做什麼錯的OS X.在OS X上從Java應用程序運行外部腳本
什麼工作(Windows)中:
String[] commands = {
"\"" + _appDataDir + "\\Temp\\Workers\\" + _batchName + "\"",
"\"" + _appDataDir + "\\Temp\\frame%d.jpg\"",
"\"" + _fileName + "\""};
proc = rt.exec(commands);
所以我一直在爲OS X下:
String[] commands = {
_appDataDir + "/Temp/Workers/" + _batchName,
_appDataDir + "/Temp/Workers/mac-ffmpeg",
_appDataDir + "/Temp/frame%d.jpg",
"\"" + _fileName + "\""};
proc = rt.exec(commands);
這適用於文件名中沒有空格的情況,但當存在具有「java.io.IOException:錯誤文件描述符」錯誤的空格時失敗。
目前,我已經改變了所有的路徑有沒有空格作爲一個簡單的辦法,但因爲這是由用戶從一個保存對話框中選擇了我沒有在文件名字符串控制。我已經嘗試過在文件名周圍沒有雙引號但沒有任何區別。
我也試過的ProcessBuilder如下(包括有和沒有 「/斌/慶典/,-c」 位):
ProcessBuilder proc2 = new ProcessBuilder(
"/bin/bash",
"-c",
_appDataDir + "/Temp/Workers/" + _batchName,
_appDataDir + "/Temp/Workers/mac-ffmpeg",
_appDataDir + "/Temp/frame%d.jpg",
"\"" + _fileName + "\""
);
proc = proc2.start();
但是這給了同樣的錯誤。據我所知,我正在做其他類似問題的建議,但沒有任何工作。任何想法,將不勝感激!
這是偉大的,謝謝!在腳本中使用引號本身已經成功了。是什麼把我這裏的是,當我試圖運行腳本,並從終端傳遞的參數(帶雙引號),它工作得很好,所以我本以爲這個問題與Java代碼,而不是腳本所在。 – aritchie