我有这个问题: 我创建了一个执行一些任务的 bash 脚本。在某一时刻,该脚本调用一个 java 程序。该 java 程序执行一些 wsdl 任务,并且在某一时刻必须调用外部 fortran 程序来执行模拟并将结果放入文件“oucomes.dat”中。 program.exe 完美执行,但 java 程序似乎无法打开 fortran 程序创建的文件。 java程序中调用fortran模拟的代码为:
Runtime.getRuntime().exec("./script.sh");
其中 script.sh 包含
#!/bin/bash
./program.exe
当我首先调用program.exe,然后调用java程序时,java程序可以完美地读取“outcomes.dat”。问题是我必须从java内部调用program.exe,因为我需要来自wsdl服务的实时数据并最终将数据发送回wsdl服务。所以我猜问题出在我从 java.util.exe 内部调用 program.exe 的形式。一种解决方案可能是将 java 中的代码拆分为两个程序,并在两个程序之间放置对 program.exe 的调用。但我想要一个更快的解决方案(在CPU和内存使用方面)。为了让java程序读取“outcome.dat”,调用program.exe的正确形式是什么? PS:我使用Linux。
最佳答案
看起来您并没有在等待 script.sh 完成。你需要做这样的事情(未经测试):
Process p = Runtime.getRuntime().exec("./script.sh");
p.waitFor();
您还可以使用 exitValue()
测试进程的退出值。
参见http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html .
关于java - 从Java调用系统命令时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9099979/