2011-02-14 97 views
0

我見過這個問題,之前詢問過並試過了所發佈的解決方案。不幸的是,他們沒有工作。我試圖製作一個簡單的Java程序,它可以運行帶有輸入參數的已編譯Objective-C程序(Unix可執行文件)。下面是在Java的我都試過,似乎沒有奏效的企圖:在Java中運行Unix可執行文件Objective-C文件(OS X)

String[] cmd = {"/bin/bash", fullFilePath, Param}; 
Runtime.getRuntime().exec(cmd); 

這是生成126「命令調用無法執行」的處理器錯誤。我試過其他的變體,例如:

String[] cmd = {"/bin/bash fullFilePath \"Param\""}; 
String[] cmd = {"/usr/bin/open fullFilePath \"Param\""}; 

任何有關我如何獲得此功能的建議或想法?我只需要用參數在Java中運行編譯的Objective-C程序。我覺得這不會很難。在此先感謝,如果您需要更多信息,請提問。

+0

fullFilePath的值是什麼?它是應用程序文件夾還是附帶的可執行文件 – Mark 2011-02-14 20:56:36

+0

這是可執行文件的完整路徑。 – David 2011-02-14 21:06:54

回答

0

是否有任何特定的原因,你通過命令行執行你的可執行文件?作爲多一個Windows的人,我可能失去了一些東西,但肯定只是下面應該工作:

String[] cmd = {fullFilePath, Param}; 
Runtime.getRuntime().exec(cmd); 

(假設fullFilePath確實是你的可執行文件的完整絕對路徑)。

順便說一句:其他程序是用Objective-C編寫的這個事實幾乎肯定是不相關的。

+0

理想情況下,它應該,但由於某些原因,當我使用該參數時,該參數將被忽略。該程序運行(返回0的值),因爲它應該,但該參數被刪除。我真的很困惑,爲什麼Java只是忽略參數。 – David 2011-02-14 21:03:53

0

嘗試使用sh: -

String[] cmd = {"/bin/sh", "-c", fullFilePath, Param}; 
Runtime.getRuntime().exec(cmd); 
0

其原因誤差126是 「權限問題或命令不是可執行」。

確保您的文件可以從命令行首先執行。您可能必須首先使用chmod設置執行位。

chmod a+x <filename>