2013-10-07 47 views
0

所以我在linux mint上寫了一個程序,在其中我將gcc從我的jar複製到一個臨時文件夾 /tmp/some_number /。我可以像這個/ tmp/some_number/gcc這樣的終端啓動gcc。 問題是我不能用ProcessBuilder做同樣的事情。ProcessBuilder的問題(java)

我寫:

try { 
    ProcessBuilder pb = new ProcessBuilder("tmp/some_number/gcc") 
    pb.directory(new File("tmp/some_number/")); 
    Process p = pb.start() <--- here comes the error 
    int retval = p.waitFor(); 
    p.destroy(); 
} catch (Exception e) {e.printStackTrace();} 

它總是拋出的錯誤:

java.io.Exception: Cannot run program "/tmp/some_number/gcc" (in directory "/tmp/some_number"): error=13, Keine Berechtigung (means no permission) 
many @s 
Caused by: java.io.IOException: error=13, Keine Berechtigung 
more @s 

在另一方面,我可以創建在/ tmp/some_number一個新的文件/寫文件中的文本。

那麼爲什麼ProcessBuilder不能啓動我的文件?

庫:https://github.com/Xeroth95/MyEditor(其文件MyLinker)

+0

gcc可執行文件是否爲您正在運行的用戶? – Todd

+2

閱讀錯誤,您沒有執行權限。嘗試'新的文件(「tmp/some_number/gcc」)。setExecutable(true)'。 –

+0

非常感謝你! – user2855916

回答

0

似乎裏面的代碼路徑是相對的,因爲它不會有一個「/」開頭

tmp/some_number/gcc 

您文件寫入到/ tmp但試圖從

<present working directory>/tmp