java jna 報錯:Unable to load library


  這個錯誤是真的有時候讓人頭疼,為了讓有同樣問題的同學少走彎路,以此分享我處理這個報錯的經驗。

  這個錯誤很明顯是無法加載到指定的動態鏈接庫,但是為什么無法加載確沒有具體顯示出來,是路徑不對呢,還是dll的平台與當前jvm的平台不匹配沒有在錯誤信息中顯示出來。所以需要一步一步排除找原因。

  1)首先你要明確知道這個dll動態鏈接庫是32位的還是64位的編譯的,與之對應的就是你的java版本也是要對應的32位或者64位的。

  2)確認了第一點那么基本的環境就沒問題了,然后是填寫路徑,一般路徑可以是填相對路徑還是絕對路徑,為了避免可能出現未知錯誤,強烈建議還是填寫絕對路徑,絕對路徑要是反斜杠"\",為了避免出錯可以直接在IDE工具里面找到對應的dll文件右鍵copy path,如下圖2.1

           圖2.1

 

粘貼到加載dll路徑的方法里作為參數,效果如下圖2.2

           圖2.2

 

 堅持一個原則能復制粘貼就不要自己手動輸入!

  3)前面兩步如果可以保證正確的話,那么基本上是可以加載成功的,如果還是失敗那請再回去驗證前面的步驟,如驗證j程序運行是不是在你預期的jvm之上

點擊運行程序看看當前運行的jdk版本是哪一個,如下圖3.1

              圖3.1 

接下來就是cmd,運行java  -version,看下圖3.2所示的jdk版本是32位,還是64位。jdk版本一致,且是64位,那么與我的dll是相同的平台,

               圖3.2

 

 那么可以驗證下dll是不是64位或者32位就好了,驗證方法自行百度或者參照這位博主的https://www.cnblogs.com/Czhenyu/p/6439383.html

最后就是路徑問題了,如果你是按照我的操作來的那么路徑就不會有問題,應該是正常運行的。

  4)到這一步,你的程序還是無法加載dll文件的話,我只能提供思路就是,你的dll是否還引用了其它的dll文件,其它的dll文件的平台與當前不一致。或者找你得到dll來源,確認這個dll是否可以用,dll文件時可以用visual studio 2017或其它把版本工具用C#代碼直接引用調用的,當然你也可以用哪個工具打包一個dll。

 最后總結一下:1.平台要一致,平台要一致,平台要一致,重要的事情說三遍。

       2.路徑問題,最好是絕對路徑。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM