2012-02-01 76 views
1

我有这个问题: 我创建了一个bash脚本来执行一些任务。这个脚本在某一时刻调用一个java程序。这个java程序执行一些wsdl任务,并且有一点必须调用外部fortran程序来执行模拟,并将结果放入文件“oucomes.dat”中。 program.exe是完美的执行,但Java程序似乎无法打开由Fortran程序创建的文件。在调用FORTRAN模拟Java程序的代码是:从Java调用系统命令时出现问题

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

其中script.sh包含

#!/bin/bash 
    ./program.exe 

当我先打电话的Program.exe,然后Java程序的Java程序可以读取prefectly “outcomes.dat”。问题是我必须从java内部调用program.exe,因为我需要从wsdl服务实时获得一些数据,并最终将数据发送回wsdl服务。所以我想这个问题是我从java内部调用program.exe的形式。一种解决方案可能是在两个程序中分解java代码,并在程序之间编程调用program.exe。但我想要一个更快的解决方案(就CPU和内存使用情况而言)。为了让java程序能够读取“outcome.dat”,调用program.exe的正确形式是? PS:我使用linux。

回答

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

+0

正确的格式为:\t try { \t Process p = Runtime.getRuntime()。exec(“./ script.sort.sh”); \t int exvalue = p.waitFor(); \t} catch(Throwable t){ do_something; } – emanuele 2012-02-02 10:01:59