7

プラットフォーム固有の C/C++ コードから Java へのファイル システム変更通知を提供するために、JNI (Java Native Interface) の世界に初めて足を踏み入れようとしています。それは、私が見逃したこれを行うための素晴らしいライブラリを誰かが提案しない限りです。

JNI を初めて使用したので、インターフェイス側とライブラリ生成側に関する多くのドキュメントを見つけることができましたが、ネイティブ ライブラリの構築に関するドキュメントはあまり見つかりませんでした。

既存の Java ソースの ant に基づく既存のビルドがあるので、ライブラリを作成するために ant に make を呼び出させるべきか、または作成後に make に ant を呼び出させるのが最善かを解決しようとしています。図書館?

どちらのオプションも非常に優れているとは言えませんが、コードをコンパイルしてライブラリを直接生成するために ant にコンパイラを呼び出させるよりは優れているように思えます。

4

5 に答える 5

3

私は make が暗黙のルールセットと空白の扱いのために強く嫌います。個人的には、C コンパイルを行うためにcpp タスク ( http://ant-contrib.sourceforge.net/cpptasks/index.html ) を使用します。make ほど柔軟ではありませんが、それほど複雑ではありません。つまり、make を学ぶことで開発者に負担をかける必要がありません。

于 2008-08-18T23:19:59.910 に答える
3

JNI のより簡単な代替手段として、JNA を試してみてください: https://jna.dev.java.net/は、この面倒を解決し、より簡単になる可能性があります (必要なことができると仮定して)。

于 2008-08-18T22:36:49.967 に答える
1

私は今、似たようなことに取り組んでいます。swig.org の swig を使用すると、ネイティブ ライブラリへのスタブが生成されるため、多くの場合簡単であることに注意してください。

あなたの質問に対する簡単な答えは、ネイティブ ライブラリは Java クラス ファイルから生成される swig 生成ヘッダーに依存するため、Java ライブラリが既にビルドされた後に、ant ファイルが make ファイルを実行する必要があるということです。

ant に非常に精通しており、新しいシステムを学びたくない場合は、別のポスターによってリンクされているhttp://ant-contrib.sourceforge.net/cpptasks/index.htmlで c++ をビルドできます。蟻。

于 2008-09-17T04:50:06.820 に答える
1

JNI を完全にスキップして、標準出力に通知を書き込む外部プログラムを使用します。Java は、プログラムの出力ストリームから単純に読み取り、必要なイベントを生成できます。簡単な通知を送信することだけが必要な場合、JNI は多すぎる作業です。

また、Linux では、「inotifywait」を開始するだけです (適切なパラメーターを使用して、「man inotifywait」を参照してください)。

于 2008-09-17T20:55:51.100 に答える