【问题标题】:Can't run shell script with ProcessBuilder无法使用 ProcessBuilder 运行 shell 脚本
【发布时间】:2018-11-03 12:10:58
【问题描述】:

我采用了类似问题之一的代码:

    Process p = null;
    ProcessBuilder pb = new ProcessBuilder("scr.sh");
    pb.directory(new File("/Users/alex/"));
    p = pb.start();
    Thread.sleep(TimeConst.SECOND);

并从public static main() 运行此代码,我确实将scr.sh 文件放在alex 文件夹下,但收到异常:Caused by: java.io.IOException: error=2, No such file or directory

我的代码有什么问题?

【问题讨论】:

  • 试试./scr.sh

标签: java shell processbuilder


【解决方案1】:

我删除了指定工作目录的行并用绝对路径替换文件名,然后它就起作用了。

为了接收echo 消息,我必须从我的标准输入 (?) 中读取:

final Scanner in = new Scanner(p.getInputStream());
        new Thread(() -> {
            while (in.hasNextLine())
                System.out.println(in.nextLine());
        }).start();

【讨论】: