Java 即使在放置waitFor函数后,进程也未完成
我不熟悉java中的这个过程,我想在java中运行的shell命令有问题。 我有一个包含大量数据的文件,我想用XSL转换它。 如果在cmd.exe上运行该命令,则该命令工作正常,但在java代码中不工作。 我也使用了等待过程,但仍然没有输出。请帮忙。 谢谢 小片段代码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:
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()
的工作方式不同。