现在输出挂在 waitFor()
使用Java从外部启动外部进程时,Runtime.exec
必须读取该进程产生的任何输出,否则该进程可能会阻塞(来源:JavaDocs for java.lang.Process)。
请ProcessBuilder
改用,并调用redirectErrorStream
以合并标准输出和错误流,然后从中读取所有内容,process.getInputStream()
直到达到EOF。只有这样才能安全打电话waitFor
。
ProcessBuilder还将帮助解决空格问题,因为您必须自己将命令行拆分为单个单词
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", file.getAbsolutePath());