从Java调用系统命令时出现问题

时间:2012-02-01 17:03:53

标签: java

我有这个问题: 我创建了一个执行某些任务的bash脚本。有一次,这个脚本调用了一个java程序。这个java程序执行一些wsdl任务,并且在一点上必须调用执行模拟的外部fortran程序并将结果放在文件“oucomes.dat”中。 program.exe完美执行但java程序似乎无法打开fortran程序创建的文件。调用fortran模拟的java程序中的代码是:

Runtime.getRuntime().exec("./script.sh");

其中script.sh包含

    #!/bin/bash
    ./program.exe

当我第一次调用program.exe然后调用java程序时,java程序可以完全读取“outcomes.dat”。问题是我必须从java内部调用program.exe,因为我需要从wsdl服务实时获取一些数据,并最终将数据发送回wsdl服务。所以我想问题的形式是我从java内部调用program.exe。一种解决方案可能是将java中的代码拆分为两个程序,并在程序之间调用program.exe。但我想要一个更快的解决方案(在CPU和内存使用方面)。哪个是调用program.exe以允许java程序读取“outcome.dat”的正确形式? PS:我使用的是linux。

1 个答案:

答案 0 :(得分:1)

看起来好像您正在等待script.sh完成。你需要做这样的事情(未经测试):

Process p = Runtime.getRuntime().exec("./script.sh");
p.waitFor();

您还可以使用exitValue()测试流程的退出值。

请参阅http://docs.oracle.com/javase/6/docs/api/java/lang/Process.html