加载随罐子一起提供的 JNA 库



我尝试在java库(比如project A)中包含本机库(Linux共享库myLib.so),该库使用maven打包到jar中。我将本机库作为资源添加到 jar(jar 中的顶层)。

现在我尝试在另一个项目(project B)中使用此库。当我通过 Java 库在我的对象上调用该方法时,它找不到该库。

在项目 B 中,我称之为类似

org.projectA.MyObject.initLib();

MyObjectproject A 需要访问 libarary:

public static void initLib() {
      MyLib lib = (myLib) Native.loadLibrary("myLib.so"),MyLib.class);
}

那么,我可以随 jar 一起交付共享库,还是需要使用解决方法,例如将资源作为流获取并首先将其写入文件系统?

您必须先从 JAR 中提取它并将其写入临时目录。操作系统不允许你从内存加载共享库,除非你编写自己的 PE/ELF 加载程序。

最新更新