![](/img/trans.png)
[英]Issue with setting environment variable through bat file to execute a java program
[英]take time to execute .bat file through java?
我已经编写了使用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“路径”
路径是配置文件的位置。 当我用cmd或双击运行它时,它工作正常。
任何人都有任何想法。 谢谢
可能是您应该冲洗作家。
out.newLine();
out.flush();
out.close();
您的程序打算做什么并不清楚,但实际上它正在做什么如下:
如果您要说要花费一些时间将输出写入文件,那并不是完全意外的。 操作系统可能会决定给新启动的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.
如果您不使用外部命令生成的流,则可能导致程序挂起。 请参阅本文 ,其中几乎涵盖了使用Runtime.exec的所有陷阱。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.