這段時間要寫一個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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!