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

时间:2016-04-27 22:41:48

标签: java linux java-native-interface

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

static {
    System.loadLibrary("magma");
    System.loadLibrary("magmajni");
}

magmajni取决于岩浆,所以我先明确加载岩浆。这在Windows上运行良好。

然而,在Linux上,当它到达magmajni时,它显然想再次加载岩浆。此外,当它再次尝试加载时,它会忽略java.library.path并抛出UnsatisfiedLinkError,因为它无法找到libmagma.so。

我可以让它运行的唯一方法是在运行jar之前设置LD_LIBRARY_PATH。我不喜欢那个解决方案。当我已经明确加载它时,我不明白为什么它应该再次加载岩浆。

0 个答案:

没有答案