2009-11-25 88 views
2

我的問題是我想在eclipse中的一個插件中運行一些jar文件。這瓶進行分析的Eclipse項目:在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項目的結果目錄,結果到這裏來。

罐子運行後,我想將「temp」文件夾重命名爲另一個,但eclipse在罐子完成運行前重命名「temp」文件夾,所以罐子不能正常工作。

我嘗試使用sp2.waitFor()方法,但它不好。我認爲在cmd.exe /C start新過程之後的「啓動」參數,我無法控制。
如果有人有一些建議,請給我。謝謝。

回答

1

在繼續執行其他程序之前,您可以使用StreamGobbler(請參閱此SO question或此simple one)查找命令的完成。

注意:讀取標準輸出和標準錯誤is advised

請注意:因爲這個SO answer illustrates,沒有啓動運行'cmd'可能會使.waitFor()做你想做的。

Process p = Runtime.getRuntime().exec(cmd + " < c:\\someTextFile.txt", null, cmdDir); 
... 
int errCode = p.waitFor(); 
1

嘗試運行的Java,而無需使用啓動:

String run_tool ="cmd.exe /C java ... 
相關問題