ネイティブ ライブラリと JNI ライブラリを単一の JAR 内にカプセル化する
問題:
東京キャビネット ライブラリを JAR に変換することで配布を簡素化し、手動ライブラリの必要性を回避します再配布。現在利用可能なソリューションには、ネイティブ ライブラリを含めることと、その使用を特定のプラグインに制限するという制限があります。
解決策: ネイティブ ライブラリと JNI ライブラリを JAR に一緒にパッケージ化できますか?
はい、さまざまなプラットフォーム用のネイティブ JNI ライブラリを含む統合 JAR を作成することは可能です。 System.load(File) を使用すると、通常の System.loadLibrary(String) をバイパスして、システム レベルのライブラリをインストールする必要がなく、ライブラリをロードできます。 JAR には、サポートされているすべてのプラットフォームのライブラリが含まれていない可能性があるため、プラットフォームに互換性がない可能性があるという欠点があります。
プロセス:
静的初期化: メイン クラス内に次の静的初期化子を実装します。
ハイブリッド解決策:
ハイブリッド アプローチを採用して、java.library.path に沿った組み込みライブラリの読み込みとシステム全体のライブラリ検索の両方を可能にすることができます。これにより、組み込みライブラリが利用できないプラットフォームとの互換性が確保されます。
実装例:
ZeroMQ の jzmq Java バインディングは、この機能を示しています。そのコードは [こちら] (jzmq コードへのリンク) で入手でき、プラットフォームの柔軟性を維持しながらシームレスな読み込みエクスペリエンスを提供します。
以上が配布を簡略化するために、ネイティブ ライブラリと JNI ライブラリを JAR にパッケージ化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。