由于Java跨平台需要,自行写了一个跨平台的 JNI 本地方法库加载器。
简单实现逻辑
- 根据环境变量
os.name
,判断当前系统属于Windows
,Linux
还是MacOS
- 如果是
Linux
,继续判断是CentOS
还是Debian
- 读取 jar 包中的库文件
- 根据文件名后缀
dll
、so
、jnilib
和dylib
,过滤符合当前平台的库文件 - 将当前平台的库文件复制到系统临时目录
java.io.tmpdir
- 使用
System.load
加载库文件
由于Java跨平台需要,自行写了一个跨平台的 JNI 本地方法库加载器。
os.name
,判断当前系统属于Windows
,Linux
还是MacOS
Linux
,继续判断是CentOS
还是Debian
dll
、so
、jnilib
和dylib
,过滤符合当前平台的库文件java.io.tmpdir
System.load
加载库文件