在我的代码中,我正在尝试使用simex作为工具将文件MDL转换为文件XML。 然后我将使用此xml文件进行一些分析。 当我手动转换此文件或我处理一个小模型(通过进程....) ,没有发生任何错误。
问题是当我尝试使用此代码通过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):Finprématuréedufichier ............ < /强>
所以我想知道如何等待转换结束然后执行xml文件分析的第二部分。
的Nb: 我也试过把
child.getInputStream().close();
child.getOutputStream().close();
在 child.waitFor(); 之前
Somaya。
答案 0 :(得分:1)
我认为这与此处讨论的问题相同: Runtime.exec().waitFor() doesn't wait until process is done
删除start
参数以在前台运行shell而不是在后台模式,以便Java等待它。