【问题标题】:How to set working directory with ProcessBuilder如何使用 ProcessBuilder 设置工作目录
【发布时间】:2012-01-14 09:33:15
【问题描述】:

我正在尝试在 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

【问题讨论】:

    标签: java unix ubuntu process processbuilder


    【解决方案1】:

    您正在尝试执行 /home,但它不是可执行文件。进程构建器的constructor 参数是要执行的命令。

    您想设置工作目录。您可以通过directory 方法来实现。

    这是一个完整的例子:

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

    【讨论】:

    • 好的,谢谢。我刚刚编辑了这个问题,因为我意识到我犯的错误。我想你可能也回答了我的其他问题
    • 我不得不使用 ProcessBuilder pb = new ProcessBuilder(new String[]{"sh","do_foo.sh"});为了使它工作。
    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多