ネイティブ ライブラリと JNI ライブラリを JAR にバンドルする
最近、開発者は、ネイティブ ライブラリを含む複数の依存関係を JAR 内に統合する手段を模索しました。単一の JAR ファイル。この戦略は、配布を簡素化し、再配布の問題を減らすことを目的としています。
ネイティブ ライブラリの難題
この取り組みで遭遇した課題の 1 つは、実際のネイティブ ライブラリを含めることでした。 JNI ライブラリのみに焦点を当てた既存の試みとして。さらに、以前のソリューションは特定のネイティブ依存関係プラグイン向けに調整されているようで、一般的な再配布には適していない可能性があります。
包括的なソリューション
推奨されるアプローチには、 System.load(File) は、java.library.path システム プロパティに依存する従来の System.loadLibrary(String) の代わりにライブラリをロードします。この方法では、ユーザーがライブラリを手動でインストールする必要がなくなりますが、JAR が必要なライブラリをすべてカプセル化していない場合、プラットフォーム間の移植性が損なわれる可能性があります。
実装プロセス
コードを実装します。メインクラスの静的初期化子で次のようにします。
ケーススタディ: jzmq
このソリューションは、ZeroMQ の Java バインディングである jzmq で採用されており、埋め込みバージョンをロードできない場合、ハイブリッド機能により java.library.path に沿ってライブラリを検索するフォールバックが可能です。 .
以上がネイティブ ライブラリと JNI ライブラリを単一の JAR ファイルにバンドルするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。