依赖Jar包归一

Java软件包归一主要针对包含so的Jar包应用,将相关so二进制文件分路径存储,并在对应的Java文件中进行修改适配,最终生成的Jar包能同时运行在鲲鹏及x86平台下,做到Jar包归一。

处理步骤

Java提供了JNI(Java Native Interface)接口来调用native函数,但需单独编写JNI文件,即使用Java能够理解的C代码调用native函数,过程相对复杂。更便捷的方式可通过JNA(Java Native Access)框架,JNA提供了一个动态的转发器,可实现Java和C的数据类型映射,简化native函数的调用。只需将编译后的so文件置于JNA默认的架构平台关联路径下,通过JNA接口可快速实现不同架构平台下so库调用,实现Jar包依赖的归一。

示例:

以下示例代码通过构造一个包含libcrc32.so动态库的Jar包,进行Jar包依赖库归一,使其在鲲鹏及x86架构平台均能调用运行。

最终将Clibrary.java文件及相关so打包成jar包,即可在多平台下调用crc32_u8函数运行。部分相关文件组织结构如下:

├── java 
        │   └── org 
        │       └── example 
        │           └──Clibrary.java 
        └── resources 
            ├── linux-aarch64 
            │   └── libcrc32.so 
            └── linux-x86-64 
                └── libcrc32.so