Java 即使在放置waitFor函数后,进程也未完成

Java 即使在放置waitFor函数后,进程也未完成,java,Java,我不熟悉java中的这个过程,我想在java中运行的shell命令有问题。 我有一个包含大量数据的文件,我想用XSL转换它。 如果在cmd.exe上运行该命令,则该命令工作正常,但在java代码中不工作。 我也使用了等待过程,但仍然没有输出。请帮忙。 谢谢 小片段代码 String c="java -Xmx1g -jar c:\\temp\\FileConverter.jar xmlTransform title \"Data\" root \"c:\\temp\\\" src \"c:

我不熟悉java中的这个过程,我想在java中运行的shell命令有问题。 我有一个包含大量数据的文件,我想用XSL转换它。 如果在cmd.exe上运行该命令,则该命令工作正常,但在java代码中不工作。 我也使用了等待过程,但仍然没有输出。请帮忙。 谢谢

小片段代码

    String c="java -Xmx1g -jar c:\\temp\\FileConverter.jar xmlTransform title \"Data\" root \"c:\\temp\\\" src \"c:\\temp\\input.xml\" xsl \"converter.xsl\" xsl:MEMBER_CODE \"111\" xsl:MEMBER_NAME \"ABC\" xsl:MEMBER_PASSWORD \"abc\" dst \"c:\\temp\\dummy.xml\" src-error \"c:\\temp\\error\"";
    Runtime rt = Runtime.getRuntime();
     try {
        Process proc = rt.exec(c);
        synchronized (proc) {
             proc.wait(10000);
        }
        System.out.println("Done");
        }catch (IOException e) {
            e.printStackTrace();
}

您正在使用
Object
中的
wait()
方法。你应该使用
Process#waitFor()
。我也试过了,但是如果输出文件夹中没有任何内容,进程运行得更快。这表明你的进程无论如何都没有运行。exec()的参数可能是错误的。阅读这里:我想这可能是问题所在,但是如果我在cmd上运行相同的命令,它可以很好地处理理想的输出。好的,但是
cmd.exe
Runtime.exec()
的工作方式不同。