Java中的Processbuilder不会抛出子流程异常

时间:2017-01-25 05:23:09

标签: java exception-handling processbuilder

我正在尝试使用ProcessBuilder在Java中执行jar文件。现在,每当ProcessBuilder调用的子进程抛出任何异常时,ProcessBuilder都不会捕获异常,执行会继续进行。

以下是我的代码:

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

当子进程抛出任何异常时,catch块被假定为打印任何异常。但是,它永远不会。 我错过了什么吗?

1 个答案:

答案 0 :(得分: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块捕获。 需要帮助!