我正在尝试使用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块被假定为打印任何异常。但是,它永远不会。 我错过了什么吗?
答案 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块捕获。 需要帮助!