繁体   English   中英

花时间通过Java执行.bat文件吗?

[英]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();

您的程序打算做什么并不清楚,但实际上它正在做什么如下:

  1. 打开“ .bat”文件进行写入。
  2. 启动 “ doxygen”命令作为单独的外部过程。
  3. 它将命令写入标准输出,然后写入文件。

如果您要说要花费一些时间将输出写入文件,那并不是完全意外的。 操作系统可能会决定给新启动的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM