JAVA中調用外部程序,並等待其退出(涉及Runtime和ProcessBuilder)


這段時間要寫一個java調用外部程序的功能,踩了幾個坑,這里分享一下。

首先用的是RunTime,調用代碼如下:

  Process pro = Runtime.getRuntime().exec("cmd.exe /C start " + exePath + " " + params);// exePath是外部程序路徑,params是參數,不清楚為什么這樣寫,沒研究太細,但是不這樣寫程序調不起來
  pro.waitFor();// 等待進程退出//////  問題就在這 用WaitFor等待程序退出完全不起作用!!!

 它並不會等待程序退出而是直接走下一步了,從而導致我后面的操作出了問題。

 后來又用了Java里另外一個類 ProcessBuilder。

  ProcessBuilder pb = new ProcessBuilder(exePath, params);// exePath是外部程序路徑,params是參數,要注意的是,這里面參數如果有空格的話,一定要分開寫,不然會出錯。
  Process pro = pb.start(); // Start the process.
  int exitVal = pro.waitFor();// 再用waitFor等待就可以等待了

這樣就解決了我的問題,但要注意的是用ProcessBuilder調用控制台程序是沒有黑框顯示的。

關於它們其他的操作,我這里也沒深入研究,等用到的時候再說。

作者:ZSQDH
本文地址:https://www.cnblogs.com/zsqdh/p/11792549.html
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM