FORTRANコードを呼び出すJavaGUIを使用してアプリケーションを作成しています。ActionPerformedメソッドで以前に作成されたFORTRANコードの変更に基づいて更新およびコンパイルされたファイル(solution.ps)を返したいです。ただし、現在私が持っているコードは、cmdコンパイルの更新された結果を待つのではなく、古いバージョンのファイルを返すだけです。次のステップを完了する前に、cmdにプロセスの実行を待機させる方法はありますか?(cmdから直接実行すると正常に動作します)
検索しましたが、適切な時点で実行を一時停止していないように見えるprocess.waitFor()以外は見つかりません。Thread.waitFor()も試しました。
これは、ユーザー入力を別のプログラムに送信し、これらの入力を使用してコンパイルされた結果を返したい人に役立つと思います。
とにかくここにコードがあります。助けてくれてありがとう。問題を明確にしたいと思います。
String[] command ={"cmd",};
try {
Process p = Runtime.getRuntime().exec(command);
new Thread(new SyncPipe(p.getErrorStream(), System.err)).start();
new Thread(new SyncPipe(p.getInputStream(), System.out)).start();
PrintWriter stdin = new PrintWriter(p.getOutputStream());
stdin.println("cd c:\\g77");
stdin.println("g77setup.bat");
stdin.println("cd c:\\users\\laurence\\workspace\\areaplanner");
stdin.println("g77 -O4 genpack.f -o genpack");
stdin.println("genpack");
stdin.println("5");
/*
* The following line sets the time to run the FORTRAN code for
* - need to wait for this to complete before calling mpost
*/
stdin.println("30");
stdin.println("mpost solution.mp");
stdin.println("latex solution.tex");
stdin.println("dvips solution.dvi -o solution.ps");
stdin.close();
} catch(IOException e4){}