我尝试在java库(比如project A
)中包含本机库(Linux共享库myLib.so
),该库使用maven打包到jar中。我将本机库作为资源添加到 jar(jar 中的顶层)。
现在我尝试在另一个项目(project B
)中使用此库。当我通过 Java 库在我的对象上调用该方法时,它找不到该库。
在项目 B 中,我称之为类似
org.projectA.MyObject.initLib();
MyObject
从 project A
需要访问 libarary:
public static void initLib() {
MyLib lib = (myLib) Native.loadLibrary("myLib.so"),MyLib.class);
}
那么,我可以随 jar 一起交付共享库,还是需要使用解决方法,例如将资源作为流获取并首先将其写入文件系统?
您必须先从 JAR 中提取它并将其写入临时目录。操作系统不允许你从内存加载共享库,除非你编写自己的 PE/ELF 加载程序。