java - 从Java调用系统命令时遇到问题

标签 java

我有这个问题: 我创建了一个执行一些任务的 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/

相关文章:

java - 具有相似特征的对象的 UML 思想。

javascript - 如何在点击html时运行java方法?

java - 在 windows server R2 enterprise 2008 中部署 java war 文件

java - 返回要使用 AudioTrack 播放的轨道的长度(以秒为单位)

java - Jackson JSON 将整数转换为字符串

java - Safari 中的 HTML5 视频无法正常工作

java - 使用 Java unsafe 将 char 数组指向内存位置

java - ArrayDeque 比堆栈快多少?

使用AudioWaveformCreator的java绘图2(多个)波形

java - java中数字后添加空格