將本機和JNI 庫封裝在單個JAR 中
問題:
合併Tokyo將庫壓縮到JAR 中以簡化分發,同時避免手動重新分發庫的需要。目前可用的解決方案面臨包含原生程式庫並將其使用限制為特定插件的限制。
解決方案:原生和 JNI 庫可以一起打包在 JAR 中嗎?
是的,為各個平台建立一個包含原生 JNI 函式庫的統一 JAR 是可行的。 System.load(File) 可用於載入函式庫,繞過通常的 System.loadLibrary(String) 並消除系統等級庫安裝的要求。缺點在於潛在的平台不相容,因為 JAR 可能不包含所有支援平台的庫。
流程:
靜態初始化:在主類別中實作靜態初始化器:
混合解決方案:
可以採用混合方法,允許沿著java.library.path 進行嵌入式庫載入和系統範圍的庫搜尋。這確保了嵌入式庫不可用的平台的兼容性。
範例實作:
ZeroMQ 的 jzmq Java 綁定展示了此功能。其程式碼可在[此處](連結至 jzmq 程式碼)提供無縫載入體驗,同時保持平台靈活性。
以上是Native 和 JNI 庫可以一起打包在 JAR 中以簡化分發嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!