我需要使用一些参数运行本机Windows可执行文件:
ProcessBuilder pb = new ProcessBuilder(
programFolder + SUB_PATH,
params);
pb.redirectErrorStream(true);
try {
System.out.println("running...");
Process p = pb.start();
try (BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()))) {
String in = null;
while (p.isAlive() && (in = reader.readLine()) != null) {
System.out.println(in);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
这似乎不起作用。
我检查生成的命令是否正确并且在手动执行时运行正常,但看起来上面的Process
根本没有执行,没有error
或Exception
是throw
'n。
我在这里缺少什么?
编辑:我的问题不是找不到executable
但是它没有运行。
编辑: params
值为:
String params = String.format("%d %s %s %s %d %d %d %d %d %d %d %d",
3,
videoPath,
bgImagePath,
distPath,
x1, y1, w1, h1,
x2, y2, w2, h2);
更新:我将ProcessBuilder
替换为:
Process p = Runtime.getRuntime().exec(programFolder + SUB_PATH + " " + params, null, programDir);
它现在可以正常工作......
我仍然想知道为什么使用ProcessBuilder
无效?