Java试图在linux上多次加载本机库

Java试图在linux上多次加载本机库,java,linux,java-native-interface,Java,Linux,Java Native Interface,我正在运行一个jar文件,它在运行时解压并加载自己的本机库。它使用一个临时文件夹和一个修改的java.library.path来实现这一点。例如: static { System.loadLibrary("magma"); System.loadLibrary("magmajni"); } magmajni依赖于magma,所以我首先显式地加载magma。这在Windows上非常有效 然而,在Linux上,当它到达magmajni时,它显然想再次加载magma。此外,当它再次尝

我正在运行一个jar文件,它在运行时解压并加载自己的本机库。它使用一个临时文件夹和一个修改的
java.library.path
来实现这一点。例如:

static {
    System.loadLibrary("magma");
    System.loadLibrary("magmajni");
}
magmajni依赖于magma,所以我首先显式地加载magma。这在Windows上非常有效

然而,在Linux上,当它到达magmajni时,它显然想再次加载magma。此外,当它再次尝试加载它时,它会忽略
java.library.path
,并抛出一个不满意的链接错误,因为它找不到libmagma.so

我能让它运行的唯一方法是在运行jar之前设置
LD\u LIBRARY\u PATH
。我不喜欢那种解决办法。我不明白为什么在我已经明确加载岩浆的情况下,它应该再次加载它。

看到这个答案,它可能会有帮助: