Java 如何使用ProcessBuilder设置工作目录

Java 如何使用ProcessBuilder设置工作目录,java,unix,ubuntu,process,processbuilder,Java,Unix,Ubuntu,Process,Processbuilder,我正在ubuntu的主目录中尝试启动一个进程。我一直得到一个被拒绝的例外,我不知道为什么。代码如下: Process p = null; ProcessBuilder pb = new ProcessBuilder("/home"); p = pb.start(); 例外情况如下: Exception in thread "main" java.io.IOException: Cannot run program "/home":

我正在ubuntu的主目录中尝试启动一个进程。我一直得到一个被拒绝的例外,我不知道为什么。代码如下:

Process p = null;
ProcessBuilder pb = new ProcessBuilder("/home");
p = pb.start();
例外情况如下:

Exception in thread "main" java.io.IOException: Cannot run program "/home": 

java.io.IOException: error=13, Permission denied
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:475)
        at tester.Main.main(Main.java:30)
Caused by: java.io.IOException: java.io.IOException: error=13, Permission denied
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:164)
        at java.lang.ProcessImpl.start(ProcessImpl.java:81)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:468)
        ... 1 more
Java Result: 1
线程“main”java.io.IOException中的异常:无法运行程序“/home”: java.io.IOException:错误=13,权限被拒绝 位于java.lang.ProcessBuilder.start(ProcessBuilder.java:475) 位于tester.Main.Main(Main.java:30) 原因:java.io.IOException:java.io.IOException:error=13,权限被拒绝 位于java.lang.UNIXProcess(UNIXProcess.java:164) 在java.lang.ProcessImpl.start(ProcessImpl.java:81) 位于java.lang.ProcessBuilder.start(ProcessBuilder.java:468) ... 还有一个 Java结果:1
您正在尝试执行/home,但它不是可执行文件。process builder的参数是要执行的命令

您想设置工作目录。你可以通过这个方法来实现它

下面是一个完整的示例:

Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory(new File("/home"));
p = pb.start();

好的,谢谢。我只是编辑了这个问题,因为我意识到我犯的错误。我想您可能也回答了我的另一个问题,我必须使用ProcessBuilder pb=newProcessBuilder(新字符串[]{“sh”,“do_foo.sh”});为了让它工作。