我正在从Java代码运行一些.jar程序。为此,我使用ProcessBuilder,如下所示:
ProcessBuilder pb = new ProcessBuilder("java", "-jar", jarFile, configFile);
Process p = pb.start();
finished = p.waitFor(600, TimeUnit.SECONDS);
// print the error output
if(finished){
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
StringBuilder builder = new StringBuilder();
String line = null;
while ( (line = reader.readLine()) != null) {
builder.append(line);
builder.append(System.getProperty("line.separator"));
}
result = builder.toString();
reader.close();
status = p.exitValue();
}
else{
p.destroyForcibly();
result = "Error: maximum time (600 seconds) exceeded.";
}
上面的代码位于每个迭代中选择不同jar文件(使用jarFile变量)的foor bucle中。每个jar文件都会写一些输出文件(请注意,这些输出文件与程序的标准输出/标准错误不同,它们是其他附加输出文件)。
问题在于,有时一些jar程序不会创建相应的文件。如果我多次重新运行代码,那么编写输出文件的进程在每次执行时都会有所不同(这种情况非常罕见)。
有人可以告诉我如何解决这个问题吗?提前谢谢。