ProcessBuilder的进程没有编写一些输出文件(Java)

时间:2015-11-21 08:25:08

标签: java processbuilder

我正在从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程序不会创建相应的文件。如果我多次重新运行代码,那么编写输出文件的进程在每次执行时都会有所不同(这种情况非常罕见)。

有人可以告诉我如何解决这个问题吗?提前谢谢。

0 个答案:

没有答案