JNA库路径似乎被忽略了

时间:2017-05-09 13:28:19

标签: java c++ jna

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

这就是我称之为程序的方式:

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

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

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

当我使用时:

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

JNA还会加载正确的库。

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

有类似问题的人吗?

1 个答案:

答案 0 :(得分:0)

请注意,一旦离开JVM,就不再考虑jna.library.path或java.library.path。

确保设置LD_LIBRARY_PATH,使其指向libshared.so所在的位置。

更新

看看这里查看如何使用共享库中的代码:

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