Java在执行流程时遇到问题(Windows)

时间:2015-12-06 07:50:51

标签: 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 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根本没有执行,没有errorExceptionthrow'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无效?

0 个答案:

没有答案