2016-12-11 9 views
-1

私は既にこれについてのいくつかの記事があることを知っているが、彼らの誰も私の質問に答えた。JavaでCプログラムを呼び出す

私はプログラムをC言語で書いていますが、私は自分のGUIをJavaで開発しました。ですから、ボタンやコンボボックスをクリックするとCプログラムが呼び出されます。

これを行うには、Cプログラムをコンパイルして、それを私のJavaインターフェイスで呼び出すことは可能ですか? (もし可能であれば、どうすればよいのでしょうか?)。

またはにはが必要ですか?JNIを使​​用しますか? (私はそれについていくつかの記事を読んだが、それはただ一つのプロジェクトのためにそれを学ぶのはかなり複雑だったようだ)。あなたはJNIを使​​用しますが、簡単なアプローチとしてだけでCコードをコンパイルし、Runtime.getRuntime().exec()でJAVAからCの実行可能ファイルを呼び出す必要があり、最大の相互運用性を持つように

+2

はい、あなたは、Javaプログラムと相互運用するためにCコードが必要な場合はJavaの – aleb2000

+0

からネイティブメソッドを呼び出すためにJNIを使​​用する必要がありますJNI(またはJNA)を使用するのが正しい解決策です。コンパイルされたプログラムを起動したいだけなら、システムコマンドで実行することができます(これは他の多くの問題を引き起こす可能性があります)。 – UnholySheep

+0

これはうまくいきません。あなたはこれについてもっと慎重に考えなければなりません。そのCプログラムをJavaに移植します。時間です。あなた自身の心を癒すでしょう。そのC実行可能ファイルを再利用することによって発生する「節約」は、苦労する価値はありません。 – duffymo

答えて

1

あなたが応答を読み取るためにUNIXの下にある場合は、このような何かを行うことができます:

String line; 
Process p = Runtime.getRuntime().exec("/path/to/C/executable"); 

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream())); 
while ((line = in.readLine()) != null) { 
    System.out.println(line); 
} 
in.close(); 
+2

Runtime.execは[ProcessBuilder](https://docs.oracle.com/javase/8/docs/api/java/lang/ProcessBuilder.html)によって古くから廃止されました。 – VGR

+0

@VGRはい申し訳ありません...私は最後にJavaを使用して以来、それはしばらくしています...私の答えを編集することができますしたい場合 –

関連する問題