在我的代码中,我尝试使用 simex 作为工具将文件 MDL 转换为文件 XML。 然后我将使用这个xml文件进行一些分析。 当我手动转换此文件或处理小模型时(通过 Process....) ,没有发生错误。
问题是当我尝试使用此代码通过 Process 转换大模型时:
if(!(xmlFile.exists()))
{Process child;
child = Runtime.getRuntime().exec("cmd.exe /C start /min "+System.getProperty("user.dir")+"\\simex\\MDLtoXML.bat "+path+" "+xmlpath+" " +System.getProperty("user.dir")+"\\simex\\",null,null);
try {
child.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
这段代码适用于小模型,所以我认为问题是我的项目在转换结束之前分析了 xml 文件,因为错误是 : 线程“main”org.jdom2.input.JDOMParseExeception中出现异常:文档文件行出错(......XML):Fin prématurée du fichier......
所以我想知道如何等待转换结束然后执行xml文件分析的第二部分。
铌: 我也试过把
child.getInputStream().close();
child.getOutputStream().close();
在child.waitFor();之前
索玛亚。
最佳答案
我认为这与此处讨论的问题相同: Runtime.exec().waitFor() doesn't wait until process is done
删除 start
参数以在前台而不是后台模式下运行 shell,以便 Java 等待它。
关于java - 等待进程执行结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760326/