将本机和 JNI 库捆绑在 JAR 中
最近,开发人员寻求一种方法来在一个 JAR 中整合多个依赖项(包括本机库)。单个 JAR 文件。该策略旨在简化分发并减少重新分发问题。
原生库难题
这项工作中遇到的挑战之一是包含实际的原生库,作为仅关注 JNI 库的现有尝试。此外,之前的解决方案似乎是针对特定的本机依赖项插件量身定制的,可能不适合一般重新分发。
综合解决方案
首选方法涉及利用System.load(File) 来加载库,而不是传统的 System.loadLibrary(String),后者依赖于 java.library.path 系统属性。这种方法不需要用户手动安装库,但如果 JAR 没有封装所有必需的库,则可能会影响跨平台的可移植性。
实现过程
实现代码在主类的静态初始化器中:
案例研究:jzmq
此解决方案用于 jzmq(ZeroMQ 的 Java 绑定),其中混合功能允许在无法加载嵌入式版本时回退到沿 java.library.path 搜索库.
以上是如何将本机库和 JNI 库捆绑在单个 JAR 文件中?的详细内容。更多信息请关注PHP中文网其他相关文章!