1

尊敬するサー/マダム、

入力ファイルを取り、入力ファイルを操作して出力ファイルを生成するfortran exeがあります.Linux端末でコマンドを実行できます.(Linuxではfortranコンパイラが利用できると思います.)実行方法を提案してください. Javaを使用したこのfortran実行可能ファイル(Linuxマシン内)。

私が試みたのは、

 String cmd="fortranExe arg1 arg2";
 //fortranExe=exe path
 //arg1,arg2 are arguments to fortran executable program
 Process p=Runtime.getRuntime().exec(cmd); 

しかし、出力が得られません.ls、dirなどのLinuxコマンドを実行しようとすると、出力が得られます.Javaでfortranコードを実行するために必要なものはありますか?

4

3 に答える 3

1

このようなものを使用してみてください

Process process = new ProcessBuilder("C:\\PathToExe\\fortran.exe","param1","param2").start();

からこれを手に入れた

Java プログラミング: Java から exe を呼び出し、パラメーターを渡す

ProcessBuilder の詳細: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html

于 2012-06-26T08:15:57.067 に答える
1

いいえ、JVM を実行しているプラ​​ットフォームの通常のバイナリであれば問題ありません。

コンソールから実行する場合、どのようにバイナリを実行していますか?

プロセスが正常に生成されると、次のように stdout を読み取ることができます。

BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));

String line;
while ((line = br.readLine()) != null)
{
    System.out.println(line);
}
br.close();

プロセスの実行時に何らかの問題が発生した場合 (バイナリを実行する権限がないなど)、process.exitValue() は 127 を返します。

編集:他のコメントを見ると、バイナリへのリダイレクトされた入出力を使用していることがわかります。

したがって、実際にはパラメーターはありませんが、InputFileName.txt を開き、process.getOutputStream() オブジェクトを使用してプロセスに書き込む必要があります。OutputFilename.txt を設定する必要はありません。これは、InputStream から出力を読み取り、必要に応じて自分でファイルに書き込むことができるためです。

この回答はそれを詳細に説明しています:

https://stackoverflow.com/a/3644288/435583

https://stackoverflow.com/a/6796053/435583

乾杯、

于 2012-06-26T08:26:59.640 に答える
0

Runtime を使用する以外に、よりクリーンな方法はJNAを使用することです。ここで Fortranの具体的な例を参照してください。

Fortan プログラムのサブルーチンなどの個々の部分を Java から直接呼び出すこともできます。JNA は通常、C/C++ プログラムを呼び出すために使用され、一般的にこのタイプのユース ケースに適しています。

于 2012-06-26T08:27:51.420 に答える