我在Processing中启动了一个项目,然后发现我需要更多功能。我有以下功能在Processing中运行良好但现在在java环境中我收到错误。
功能:
void camSummary() {
System.out.format("Cam summary");
String commandToRun = "./camSummary.sh";
File workingDir = new File(main.path);
try {
Process p = Runtime.getRuntime().exec(commandToRun, null, workingDir);
int i = p.waitFor();
if (i==0) {
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ( (returnedValues = stdInput.readLine ()) != null) {
System.out.format(returnedValues);
}
}
}
catch(Throwable t) {
System.out.format("error: " + t + "\n");
}
}
错误:
无法运行程序“camSummary.sh”(在目录中 “/ Users / lorenzimmer / Documents / RC / CamSoft /”):错误= 2,没有这样的文件或 目录
我发现从处理到java有一些非常小的差异。我想知道这个功能是否需要稍微调整才能正常运行。
非常感谢任何帮助。
洛伦
答案 0 :(得分:0)
Runtime.exec
不会调用shell,所以你必须显式调用一个(bash,sh等)
试试这个:
更改String commandToRun = "./camSummary.sh";
到
String[] commandToRun = {"bash", "-c", "/path/to/camSummary.sh"};
或
String[] commandToRun = {"sh", "/path/to/camSummary.sh"};
然后改变
Process p = Runtime.getRuntime().exec(commandToRun, null, workingDir);
到
Process p = Runtime.getRuntime().exec(commandToRun);
在一行中:Process p = Runtime.getRuntime().exec(new String[] {"bash", "-c", "/path/to/script"});