首页 > Java > java教程 > Native 和 JNI 库可以一起打包在 JAR 中以简化分发吗?

Native 和 JNI 库可以一起打包在 JAR 中以简化分发吗?

Mary-Kate Olsen
发布: 2024-11-17 17:32:01
原创
342 人浏览过

Can Native and JNI Libraries Be Packaged Together in a JAR for Simplified Distribution?

将本机和 JNI 库封装在单个 JAR 中

问题:

合并 Tokyo将库压缩到 JAR 中以简化分发,同时避免手动重新分发库的需要。当前可用的解决方案面临包含原生库并将其使用限制为特定插件的限制。

解决方案:原生和 JNI 库可以一起打包在 JAR 中吗?

是的,为各个平台创建一个包含原生 JNI 库的统一 JAR 是可行的。 System.load(File) 可用于加载库,绕过通常的 System.loadLibrary(String) 并消除系统级库安装的要求。缺点在于潜在的平台不兼容,因为 JAR 可能不包含所有支持平台的库。

进程:

  1. JAR 程序集: 在 JAR 中特定于平台的位置包含本机 JNI 库,例如“NATIVE/${os.arch}/${os.name}/libname.lib”。
  2. 静态初始化:在主类中实现静态初始化器:

    • 确定当前的 os.arch 和 os.name
    • 在 JAR 中搜索库使用 Class.getResource(String)
    • 将库提取到临时文件,并通过 System.load(File) 加载它(如果存在)

混合解决方案:

可以采用混合方法,允许沿着 java.library.path 进行嵌入式库加载和系统范围的库搜索。这确保了嵌入式库不可用的平台的兼容性。

示例实现:

ZeroMQ 的 jzmq Java 绑定展示了此功能。其代码可在[此处](链接到 jzmq 代码)提供无缝加载体验,同时保持平台灵活性。

以上是Native 和 JNI 库可以一起打包在 JAR 中以简化分发吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板