我在jar中编写了一个工具来执行一个应用程序。这是执行应用程序的代码
String argument1 = workingDirectory +" "+ TC.getName();
try {
Process p = Runtime.getRuntime().exec(argument1);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
//theLogger.info(s);
if (s.contains("FAILED")){
theLogger.info("TC is not passed");
TC.setIsNotPassed();
}
if (s.contains("PASSED")){
TC.setIsPassed();
theLogger.info("TC is passed");
}
if (s.contains("End")) {
TC.settIterationNumber();
theLogger.info("TC Execution ends");
break;
}
}
stdInput.close();
p.getInputStream().close();
p.getOutputStream().close();
p.getErrorStream().close();
theLogger.info(Thread.currentThread().getStackTrace()[1].getMethodName().toString() + " OK");
}catch (IOException e){
e.printStackTrace();
theLogger.info(Thread.currentThread().getStackTrace()[1].getMethodName().toString() + " NOK");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
它工作正常,直到我遇到一个执行时间超过30分钟的情况。它认为在传递应用程序结果时结果失败。该代码适用于执行时间少于30分钟的情况。在我的代码中,我没有设置任何超时。 Java进程是否有任何默认超时?