JAR 内でネイティブ ライブラリと JNI ライブラリをバンドルする
Java アプリケーションのネイティブ ライブラリと JNI ライブラリに関係する一般的なジレンマは、配布と配布の手間を中心にしています。複数のライブラリを管理します。このプロセスを合理化するには、すべての必須コンポーネントを単一の JAR ファイル内にバンドルする実現可能性を検討することが不可欠になります。
技術的な実現可能性
ネイティブとネイティブの両方をパッケージ化する見通しJNI ライブラリと JAR 内の Java API クラスは実行可能であることが証明されていますが、従来の System.loadLibrary(String) メソッドからの脱却が必要です。別のアプローチでは、System.load(File) を利用します。これにより、ライブラリのロードを明示的に制御できるようになり、システム定義の java.library.path への依存が排除されます。
この強化されたメカニズムにより、すべてのライブラリの依存関係が確実に含まれるようになります。 JAR ファイル内に保存することで、エンドユーザーによる個別のインストールの必要がなくなります。ただし、対象となるすべてのプラットフォームのサポートが含まれていない可能性があるため、移植性に制限があるという潜在的な警告が伴います。
実装ガイドライン
ネイティブ ライブラリと JNI ライブラリを効果的にバンドルするにはJAR の場合は、次の手順に従います:
コードの変更: 次のタスクを実行する静的初期化子をメイン クラス内に実装します。 :
実践例
このバンドル手法の例は、ZeroMQ の Java ラッパーである jzmq ライブラリにあります。このコードはハイブリッド ソリューションを活用し、最初に埋め込みライブラリをロードしようとします。失敗した場合は、java.library.path に沿った JNI ライブラリの検索に戻ります。
以上がネイティブ ライブラリと JNI ライブラリを JAR ファイル内にバンドルできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。