Java原生库so自动加载

Github开源:scijava/native-lib-loader
Java适用的 自动加载so库的工具:关于原生库加载器
本机库加载器是一个实用程序,可帮助从 Java 加载本机库。它提供了从 JAR 文件中轻松识别、提取和加载正确的特定于平台的本机库的能力。

https://github.com/scijava/native-lib-loader

 

关于原生库加载器

本机库加载器是一个实用程序,可帮助从 Java 加载本机库。它提供了从 JAR 文件中轻松识别、提取和加载正确的特定于平台的本机库的能力。

执照

简化的 BSD 许可证

用法

添加依赖

在 Maven Central 中搜索最新版本 并将依赖项添加到您的 pom.xml。

<dependency>
    <groupId>org.scijava</groupId>
    <artifactId>native-lib-loader</artifactId>
    <version>x.y.z</version>
</dependency>

打包原生库

原生库应该打包成一个 jar 文件,目录和文件结构如下:

/natives
  /linux_32
     libxxx[-vvv].so
  /linux_64
     libxxx[-vvv].so
  /osx_32
     libxxx[-vvv].dylib
  /osx_64
     libxxx[-vvv].dylib
  /osx_arm64
     libxxx[-vvv].dylib
  /windows_32
     xxx[-vvv].dll
  /windows_64
     xxx[-vvv].dll
  /windows_arm64
     xxx[-vvv].dll
  /aix_32
     libxxx[-vvv].so
     libxxx[-vvv].a
  /aix_64
     libxxx[-vvv].so
     libxxx[-vvv].a

这里“xxx”是本机库的名称,“-vvv”是可选的版本号。根据运行时的平台,本机库将被解压缩到一个临时文件中并从那里加载。

版本信息将从“Implementation-Version”条目的 MANIFEST.mf 文件中获取。所以建议遵循 Java 的 包版本信息 约定。

加载库

如果您想加载“awesome.dll”(在 Windows 上)或“libawesome.so”(在 Linux 或 AIX 上),只需这样做......

NativeLoader.loadLibrary("awesome");

分类: 默认 标签: 发布于: 2022-06-28 09:33:42, 更新于: 2022-06-28 09:33:42