我正在运行一个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
。我不喜欢那个解决方案。当我已经明确加载它时,我不明白为什么它应该再次加载岩浆。