1. 程式人生 > >【程式碼重構 & JDT】Windows命令列執行Java檔案陷入死迴圈解決辦法

【程式碼重構 & JDT】Windows命令列執行Java檔案陷入死迴圈解決辦法

通過修改某個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();
	}
}