7

ほとんどが GUI の Java プログラムがあり、C++ コマンド ライン ツールから xml ファイルに書き込まれたデータが表示されます。ここで、Java プログラムにボタンを追加して、データを更新したいと考えています。これは、私のプログラムが C++ 機能を呼び出さなければならないことを意味します。

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

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

4

4 に答える 4

6

コードにアクセスでき、外部プログラムとの「対話型」エクスペリエンスが必要な場合 (例: 呼び出しを行う、結果を取得する、追加の呼び出しを行う)、Java アプリケーションから C または C++ コードを呼び出すことができる JNI を調べます。 & を使用して、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

于 2009-07-31T00:39:55.503 に答える
5

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

于 2009-07-31T00:44:37.890 に答える
2

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

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

于 2009-07-31T11:36:21.497 に答える