我编写了一个使用Java运行.dat文件的代码。但是当运行该应用程序时,执行需要时间意味着它会给出一半结果,然后在给出完整结果后一段时间后。
这是我的代码:
String file = config.getOutPath() + "run_doxygen.bat";
BufferedWriter out = new BufferedWriter(
new FileWriter(file));
String cmd = "doxygen " + config.getOutPath() + "Doxyfile";
runtime.exec(cmd);
System.out.println("cmd_doxy:"+cmd);
out.write(cmd);
out.newLine();
out.close();
doxygen生成xml文件。假设它生成10 xml文件。当我启动* .bat文件时,它生成5个文件并生成休息5文件需要时间。 和* .bat文件包含:doxygen“path”
path是配置文件的位置。当我用cmd或双击运行它时它工作正常。
任何人都有任何想法 。 感谢
答案 0 :(得分:0)
可能是你应该冲洗作家。
out.newLine();
out.flush();
out.close();
答案 1 :(得分:0)
你打算在程序中做什么并不完全清楚,但它实际上做的是:
如果您说将输出写入文件需要一些时间,那么这并非完全出乎意料。操作系统可能决定为新启动的doxygen应用程序提供大量的CPU时间来启动。如果它没有阻塞,则Java应用程序可能无法获得几秒钟的时间片。之后,操作系统可以在两个应用程序之间切换,直到一个或另一个完成。
但为什么这很重要?您的Java应用程序是否期望/要求doxygen在它之前完成?
如果是这样,那么解决方案是做这样的事情:
Process proc = runtime.exec(cmd);
// do more stuff.
int rc = proc.waitFor();
// Whoopee! the process has finished (or died) check the rc to see which.
答案 2 :(得分:0)
如果您没有使用外部命令生成的流,则可能导致程序挂起。请参阅this article,其中几乎涵盖了使用Runtime.exec的所有问题。