我正在尝试在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应用程序文件吗?
有类似问题的人吗?
答案 0 :(得分:0)
请注意,一旦离开JVM,就不再考虑jna.library.path或java.library.path。
确保设置LD_LIBRARY_PATH,使其指向libshared.so所在的位置。
更新
看看这里查看如何使用共享库中的代码:
https://github.com/mkowsiak/jnicookbook/blob/master/recipeNo023