【程式碼重構 & JDT】Windows命令列執行Java檔案陷入死迴圈解決辦法
阿新 • • 發佈:2018-12-26
通過修改某個Java檔案的AST節點生成n個新程式,然後用測試用例分別對這n個新程式進行執行。但是在執行過程中,發現有些新生成的新程式會陷入死迴圈的情況,後臺的java.exe一直在執行。解決方法是:設定每個程式最長執行時間為10秒,超時後,再使用命令列的形式殺掉後臺的java.exe程序。程式碼如下:
//引數cmd是命令列的形式,指定測試用例的位置以及待測的程式 public static void runCMD(String cmd){ Runtime rt = Runtime.getRuntime(); Process process; try { process = rt.exec(cmd); System.out.println(process.toString()); boolean exitStatus = false; try { exitStatus = process.waitFor(10, TimeUnit.SECONDS); if(!exitStatus){ System.out.println("cmd execute failed!"); } } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } process.destroy(); process = null; String command = "taskkill /f /im java.exe"; Process process2 = Runtime.getRuntime().exec(command); try { process2.waitFor(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }