我想爲C++庫在linux上爲JNA指定庫加載路徑。 從java文檔我調用我的程序時使用-Djna.library.path
但JNA無法加載庫。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應用程序文件?
任何有類似問題的人?
您可以加入用於加載庫的代碼? –
可能與此相同? http://stackoverflow.com/questions/27829764/jna-native-library-dependencies-and-jar-extraction –
其他地方的答案:DLL加載是由操作系統完成的,如果DLL存儲在jar中,那麼他們必須在可以加載之前將其提取到(Windows)文件系統的某處。 –