質問

私は主に GUI である Java プログラムを持っており、C++ コマンド ライン ツールから XML ファイルに書き込まれたデータを表示します。ここで、データを更新するためのボタンを Java プログラムに追加したいと思います。これは、プログラムが C++ 機能を呼び出す必要があることを意味します。

システムコールを通じてJavaからプログラムを呼び出すだけの最良の方法ですか?C++ プログラムは Mac OS および Windows 用にコンパイルされ、常に Java プログラムと同じディレクトリに存在する必要があります。

実行可能ファイルを生成したいのですが、C プログラムを jar 内に保存してプログラムから呼び出すことはできますか?

役に立ちましたか?

解決

これより良い通信方法 (SOAP、ICE、ソケットなど) が利用できないと仮定すると、次を使用して実行可能ファイルを呼び出します。 Runtime.exec(). 。JNI を使用して直接接続することもできますが、お勧めしません。いいえ、jar に実行可能ファイルを入れることはできません。できますが、シェルは実行方法を知らないため、実行できません。

他のヒント

コードにアクセスでき、外部プログラムとの「インタラクティブな」体験が必要な場合(たとえば、呼び出し、結果の取得、追加の呼び出し)、JNIを調査します。これにより、JavaからCまたはC ++コードを呼び出すことができます。 &を含むアプリケーションを使用してJNIジュースをCまたはC ++アプリにリンクします。

参照:

http://en.wikipedia.org/wiki/Java_Native_Interface

http://www.acm.org/crossroads/xrds4-2/ jni.html

「アプリを起動して結果を取得する」だけが本当に必要な場合一種の解決策として、Runtime.exec()をチェックしてください。これにより、外部プログラムを起動できます&出力をキャプチャします。

参照: http://www.javaworld.com /javaworld/jw-12-2000/jw-1229-traps.html?page=1

http://www.rgagnon.com/javadetails/java-0014.html

Java Native Access API(JNA)もご覧ください。 p>

最後の質問に答えるために、jar内から実行可能ファイルを実行することはできません。

ただし、実行する前にjar内に 保存して一時ディレクトリ/ファイルに抽出できます(最初に存在を確認し、必要に応じて抽出します)。これにより、配布するjarのみがあり、jarされたJavaコードと一致する実行可能ファイルを実行しているという点で、配布が多少簡単になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top