Project.waitfor()返回值是1,找了很久從網上沒有發現關於1的說明。
這時對源代碼調試了一下,發現Project=null.而去根目錄下點擊被調用的bat文件發現也可以被正確執行。
這時想到應該將標准錯誤流的信息打印出來,發現是bat文件的路徑只獲取到了第一個空格前。所以問題的原因是空格導致文件路徑不能被獲取。
原先的代碼
String batpath = file.getCanonicalPath() + "\\resources\\runTest.bat";
//run bat file
Process project = Runtime.getRuntime().exec("cmd.exe /c " + batpath);
int exitcode=project.waitFor();
//kill the process
project.destroy();
logger.info(exitcode);
修改后的代碼
//run bat file
Process project = Runtime.getRuntime().exec("cmd.exe /c " + batpath.replaceAll(" ", "\" \""));
此次解決問題的經驗是:
不要盲目的先去網上找答案,要先將自己的程序調試一下,將錯誤信息打印出來,然后針對錯誤信息有針對性的去網上找答案。這樣做比較有效。
