OSX中的Java执行命令

时间:2015-04-05 09:28:07

标签: java macos exec

我有一个命令在输入终端时没有问题,虽然我想从java程序执行它。
我正在使用这个代码,其中" homedir"通过在终端which spark中输入来找到。

String homedir = "/usr/local/bin/spark";
File wd = new File(homedir);
Process pwd = Runtime.getRuntime().exec("spark", null, wd);

当我运行代码时,我仍然收到错误:Cannot run program "spark" (in directory "/usr/local/bin"): error=2, No such file or directory

我错过了什么阻止它工作?

1 个答案:

答案 0 :(得分:0)

运行ls -lah /usr/local/bin/spark,您可能会发现它是一个指向别处的符号链接。如果是这样,您需要将其指定为工作目录。您也可以通过说wd.getCanonicalPath()来获取Java中的路径。

或者,如果这是一个选项,请使用Process pwd = Runtime.getRuntime().exec("/usr/local/bin/spark/spark");

所以要指定一个参数,你可以说: Runtime.getRuntime().exec("/usr/local/bin/spark/spark list");

要阅读结果,请使用以下内容: 您可以说.exec("/usr/local/bin/spark/spark");要获得结果,只需使用以下内容:

BufferedReader reader = new BufferedReader(new InputStreamReader(
        pwd.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = "";
while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
}

System.out.println(sb.toString());