我的问题是我想在插件中运行eclipse中的一些jar文件。这个罐子对日食项目进行分析:
String run_tool ="cmd.exe /C start java -Xmx400m -cp org-jcolumbus.jar;org-jcolumbus-schema.jar;lib/antlr.jar org.jcolumbus.tool.BuildModel -tasks "+src_dir+" -jsi "+SelProj.getLocation()+"/result/temp/"+SelProj.getName();
Runtime rt2 = Runtime.getRuntime();
Process sp2 = rt2.exec(run_tool);
“src_dir
”是eclipse项目的源目录
"SelProj.getLocation()+"/result/temp/"+SelProj.getName()"
是所选eclipse项目中的结果dir,结果来自这里。
在罐子运行后,我想将“temp”文件夹重命名为其他文件夹,但是在罐子完成运行之前,eclipse会重命名“temp”文件夹,因此罐子不能正常工作。
我尝试使用sp2.waitFor()
方法,但这并不好。我认为在新过程cmd.exe /C start
之后的“开始”参数是我无法控制的
如果有人有一些建议,请给我。谢谢。
答案 0 :(得分:1)
您可以使用StreamGobbler
(请参阅此SO question或此simple one)在继续执行其余程序之前查找命令的完成情况。
注意:同时阅读标准输出和标准错误is advised。
Notebis:作为此SO answer illustrates,在没有开头的情况下运行'cmd'可能会使.waitFor()
能够执行您想要的操作。
Process p = Runtime.getRuntime().exec(cmd + " < c:\\someTextFile.txt", null, cmdDir);
...
int errCode = p.waitFor();
答案 1 :(得分:1)
尝试不使用start运行java:
String run_tool ="cmd.exe /C java ...