JNA 库路径似乎被忽略了

JNA library path seems to be ignored

本文关键字:被忽略了 路径 JNA      更新时间:2023-10-16

我正在尝试为 Linux 上的 JNA 指定C++库的库加载路径。从 java 文档中,我在调用程序时使用了-Djna.library.path,但 JNA 无法加载库。

这就是我对程序的称呼:

java -jar -Djna.library.path=/home/lib program.jar

当我使用-Djna.debug_load=true时,我可以看到库路径和 JNA 试图查找库,路径正确,库名称也正确,但它没有加载。JNA 继续搜索库的资源路径,但找不到它。

当我将库放在当前目录中(与程序.jar级别相同(时,JNA 很高兴,并且库加载没有问题。

当我使用:

java -cp program.jar:/home/lib package.program

JNA 还会加载正确的库。

这里有人知道为什么-Djna.library.path不起作用吗?是因为我使用的是带有清单的 jar 应用程序文件吗?

有人有类似的问题吗?

请注意,一旦您离开 JVM,jna.library.path 或 java.library.path 将不再被考虑在内。

确保LD_LIBRARY_PATH设置为指向 libshared.so 所在的位置。

更新:

看看这里来检查使用共享库的代码是如何工作的:

https://github.com/mkowsiak/jnicookbook/blob/master/recipes/recipeNo023