将本机和 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中文网其他相关文章!