Java无法执行进程(Windows)
我需要使用一些参数运行本机windows可执行文件:Java无法执行进程(Windows),java,process,execution,processbuilder,Java,Process,Execution,Processbuilder,我需要使用一些参数运行本机windows可执行文件: ProcessBuilder pb = new ProcessBuilder( programFolder + SUB_PATH, params); pb.redirectErrorStream(true); try { System.out.println("running..."); Process p = pb.start(); try (BufferedReader re
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();
}
这似乎不起作用
我检查了生成的命令是否正确,并且在手动执行时运行良好,但似乎上面的进程
根本没有执行,并且没有任何错误或异常
我错过了什么?
编辑:我的问题不是找不到可执行文件,而是它没有运行
编辑:参数
值为:
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
不起作用?哪些参数传递给ProcessBuilder?@Berger请参见编辑…分别传递每个参数,而不是串联字符串。@assylias确实解决了问题。。。非常感谢。你能详细谈谈这个问题吗?生成的命令与在一个字符串中包含参数的命令完全相同,但是现在它可以工作了…@assylias谢谢。我不是在暗示你穿的是被否决的那个,否则我会给你贴标签。。。再次感谢你。。。