0

所以我在 linux mint 上编写了一个程序,在其中我将 gcc 从我的 jar 复制到一个临时文件夹 /tmp/some_number/ 中。我可以像 /tmp/some_number/gcc 这样的终端启动 gcc。问题是我不能对 ProcessBuilder 做同样的事情。

我写的:

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)

4

1 回答 1

0

似乎代码中的路径是相对的,因为它没有前导“/”

tmp/some_number/gcc

您正在将文件写入 /tmp 但试图从中读取它

<present working directory>/tmp
于 2013-10-07T21:33:11.060 回答