2011-06-18 9 views
1

ubuntu/linuxプラットフォーム上でgFortranプログラムを実行するためのJava/Swingコードはありますか?gFortranコードを実行するJava Swing

これはどのように行うことができますか?

+1

はい、可能です。投稿を修正してJSwingをSwingに変更してください。http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.htmlとhttp:// downloadを読んでください.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html – mKorbel

+1

スイングは本当にあなたの問題とは関係ありません。バックグラウンドスレッドでgFortranを呼び出すために気をつける必要はありません。 –

+0

2つの方法があります。 1. JavaはgFortranコードを実行しますか? 2. JaveはgFortranコードを実行するCコードを実行しますか? – Melvin

答えて

3

あなたができることの1つは、Runtimeを使用して別のプログラムを実行して、あなたのfortranコードからなるProcessを開始することです。以下はその一例である:

Runtime rt = Runtime.getRuntime(); 

try { 
    String[] env = {"/path/to/program"}; 
    Process proc = rt.exec("your_program", env); 
    System.out.println("return value: " + proc.waitFor()); 
} 
catch (Exception ex) { 
    System.err.println(ex); 
} 

上記のコードは、/パス/に/プログラム/ your_programを実行し、それが終了した後、リターンコードを読み取るのを待つだろう。

また、あなたはSTDOUTにいくつかの情報を書いて、Javaプログラムからのことを読むことができる:あなたは引数を持つ外部プログラムを供給する必要がある場合は

import java.io.*; 
... 
Runtime rt = Runtime.getRuntime(); 

try { 
    String[] env = {"/path/to/program"}; 
    Process proc = rt.exec("your_program", env); 
    System.out.println("return value: " + proc.waitFor()); 

    InputStream stream = proc.getInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); 
    while (reader.ready()) { 
    // Do something with the data here. 
    System.out.println(reader.readLine()); 
    } 
} 
catch (Exception ex) { 
    System.err.println(ex); 
}  

あなたは文字列の配列として渡します。例として、私は次のコードが何をするかであることls -lh /etc/を実行したい場合:

String[] cmd = {"ls", "-lh", "/etc/"}; 
    String[] env = {"/bin/"}; 
    Process proc = rt.exec(cmd, env); 

あなたはまた、FORTRANとインターフェースすることができるC/C++コードとの通信にJava Native Interfaceを使用して試みることができます。

+2

JNIを使​​用する場合は、[iso_c_binding](http://gcc.gnu.org/onlinedocs/gcc-4.6.0/gfortran/Interoperable-Subroutines-and-Functions.html)を必ず使用してください。さもなければ、あなたはfortran名前のmanglingを勉強しなければなりません。 – SiggyF

+0

私は本当にどこから始めるべきかわからない! – Melvin

+0

@ user793260:あなたのJavaプログラムから外部プログラムを実行するのが最も簡単です。あなたはfortranプログラムからの回答が必要ですか? 1つの方法は、結果をプログラムの戻りコードに組み込むことです(終了時)。結果をファイルに書き込むか、JavaプログラムとFortranプログラムの間にソケット接続を確立します。 –

関連する問題