2

我的问题是我想在插件中的 eclipse 中运行一些 jar 文件。这个 jars 对 eclipse 项目进行分析:

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项目中的一个result dir,results come here。

jar 运行后,我想将“temp”文件夹重命名为另一个,但是 eclipse 在 jar 完成运行之前重命名了“temp”文件夹,因此 jar 不能正常工作。

我尝试使用该sp2.waitFor()方法,但效果不佳。我认为“开始”参数,cmd.exe /C start在新流程之后,我无法控制。
如果有人有什么建议,请给我。谢谢。

4

2 回答 2

1

在继续执行程序的其余部分之前,您可以使用StreamGobbler(参见这个SO 问题或这个简单的问题)来查找命令的完成情况。

注意:建议同时读取标准输出和标准错误。

Notebis:正如这个SO 答案所说明的那样,在没有开始的情况下运行“cmd”可能会让.waitFor()你做你想做的事。

Process p = Runtime.getRuntime().exec(cmd + " < c:\\someTextFile.txt", null, cmdDir);
...
int errCode = p.waitFor();
于 2009-11-25T11:46:30.940 回答
1

尝试在不使用 start 的情况下运行 java:

String run_tool ="cmd.exe /C java ...
于 2009-11-25T11:48:21.747 回答