我有一个命令在输入终端时没有问题,虽然我想从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
我错过了什么阻止它工作?
答案 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());