2012-02-01 75 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