Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正在运行外部可执行文件(.exe)并等待其完成_Java_Multithreading - Fatal编程技术网

Java 正在运行外部可执行文件(.exe)并等待其完成

Java 正在运行外部可执行文件(.exe)并等待其完成,java,multithreading,Java,Multithreading,我一直在尝试运行一个可执行文件,并等待它完成运行,它在一个循环中,所以它运行了多次。我就是不能让它运行和等待。我也尝试给我的程序添加一个缓冲区 我要运行的文件是我的C驱动器中的一个可执行文件,正如您在下面的代码中看到的。可执行文件从另一个文本文件获取输入,这是我在运行可执行文件之前要修改的内容。该文本文件包含100多种化学物质和上千种反应,它们通过可执行文件运行。我想做的是用可执行文件生成的输出修改输入。有趣的是,可执行文件输出到同一个文件 这只是为了给可执行文件做什么提供一些背景信息。这就是为

我一直在尝试运行一个可执行文件,并等待它完成运行,它在一个循环中,所以它运行了多次。我就是不能让它运行和等待。我也尝试给我的程序添加一个缓冲区

我要运行的文件是我的C驱动器中的一个可执行文件,正如您在下面的代码中看到的。可执行文件从另一个文本文件获取输入,这是我在运行可执行文件之前要修改的内容。该文本文件包含100多种化学物质和上千种反应,它们通过可执行文件运行。我想做的是用可执行文件生成的输出修改输入。有趣的是,可执行文件输出到同一个文件

这只是为了给可执行文件做什么提供一些背景信息。这就是为什么我把它放在一个循环中,因为我在几分之一秒的时间里运行这些反应,我将获取输出并将它们放在另一个文本文件中,以便稍后进行数据分析。但目前看来,我尝试获取可执行文件的所有方法和代码都不起作用,甚至可能是因为waitFor函数。老实说,我不知道还能做什么,也不知道如何更具体地解决我的问题。我是一名java新手,需要一些指导,以了解我需要做些什么来推进我的进步

while(finalTime < 1.0){
  try{

    Runtime rt = Runtime.getRuntime();

    Process pr = rt.exec("C:file", 
        null, new File("C:file")); 

    int exitVal = pr.waitFor();
    System.out.println("Exited with error code "+exitVal + "intital:" + initialTime + ", finalTime:" + finalTime);

    pr.destroy() ;

  }catch(IOException | InterruptedException pr){ 

  pr.printStackTrace()
  }

  initialTime+= 0.10;
  finalTime+=0.10;

  updateTime();

}
while(最终时间<1.0){
试一试{
Runtime rt=Runtime.getRuntime();
进程pr=rt.exec(“C:文件”,
空,新文件(“C:文件”);
int exitVal=pr.waitFor();
System.out.println(“退出时带有错误代码”+exitVal+“初始:+initialTime+”,最终时间:+finalTime”);
pr.destroy();
}catch(IOException | interruptedeexception pr){
printStackTrace()公关
}
初始时间+=0.10;
最终时间+=0.10;
updateTime();
}
有什么建议吗?

看看


你可能已经填满了缓冲区。

我就是不能让它运行和等待。是什么意思?为什么你不能这样做?你能详细说明一下吗?我怀疑抛出了一个异常,但你忽略了它。请至少添加pr.printStackTrace();以后尽量不要写空的catch块——这是一个清晰的反模式,可执行文件在dos上运行,当我从java调用它时,它就不运行了。当它运行时,输出一个文本文件。我想等待它完成对文本文件的写入,然后再次运行该程序,因为初始输出的结果将用于下一次运行,并且会运行几秒钟。该程序是一个化学反应求解器,可以解决1500多个反应。我添加了printStackTrace(),每次执行时它都会运行waitFor和stopsjust线程