如何逐个运行java.lang.Process?

时间:2018-04-14 07:57:13

标签: java process exec

我需要通过Java逐个运行maven命令的帮助。

在我的代码中,我尝试运行maven build命令并将日志打印到Swing TextArea窗口。 但问题是var xdoc = new XDocument(xmlsnippet); string xml = RemoveAllNamespaces(xdoc.ToString()); foreach (XElement element in XDocument.Parse(xml).Descendants("leaf")) { arr.Add(new Test("leaf", element.Value, 2)); break; } foreach (XElement element in XDocument.Parse(xml).Descendants("sas")) { arr.Add(new Test("sas", element.Value, 2)); break; } foreach (XElement element in XDocument.Parse(xml).Descendants("kir")) { if (element.Value == "0") arr.Add(new Test("kir", "90", 2)); break; } 无法正常工作。结果是多个过程 正在同时运行并且日志未正确打印。 在互联网上,我发现Process.waitFor()有时不起作用。相反,我可以使用 waitFor()。但我不确定在我的代码中我将如何使用该方法。 请帮忙

Process.isAlive()

1 个答案:

答案 0 :(得分:0)

我有点困惑你到底在哪里挣扎,所以也许我忽略了什么,但你通常会这样使用它:

process[count].waitFor();
while (process[count].isAlive()) {
    Thread.sleep(100);
}

您可能希望完全摆脱waitFor并在循环中添加一些额外的检查,例如如果进程挂起,则超时或取消进程的信号,以便您的应用程序可以正常终止:

while (process[count].isAlive()) {
    if (someTimeoutCondition || someCancelCondition) {
        // throw exception or do whatever else you want to do in this situation to gracefully exit
    }
    Thread.sleep(100);
}