2017-01-25 41 views
2

我想在Java中使用ProcessBuilder執行一個jar文件。現在,無論何時由ProcessBuilder調用的子進程拋出任何異常,ProcessBuilder都不會捕獲該異常,並且執行會持續進行。Java中的Processbuilder沒有拋出子進程異常

下面是我的代碼:

try { 
ProcessBuilder pb = new ProcessBuilder("java", "-jar", CommonConstants.jarFileLocation, 
       fileEntry.getAbsolutePath(), CommonConstants.commonFileLocation);  
     Process p = pb.start();   
    } 
catch (Exception e) {   
     e.printStackTrace();  
    } 

catch塊是假設打印任何異常每當子流程拋出任何。但是,它從來沒有。 我錯過了什麼?

回答

2

完成它在控制檯印刷....

我使用的ProcessBuilder inheritIO方法,其設置源和目的地子過程標準I/O是相同的那些當前的Java程序。

因此,修改後的代碼...

try { 
ProcessBuilder pb = new ProcessBuilder("java", "-jar", CommonConstants.jarFileLocation, 
       fileEntry.getAbsolutePath(), CommonConstants.commonFileLocation).redirectError(Redirect.INHERIT);  
     Process p = pb.start();   
    } 
catch (Exception e) {   
     e.printStackTrace();  
    } 

然而,需要由catch塊被捕獲。 需要幫助!