這個錯誤是真的有時候讓人頭疼,為了讓有同樣問題的同學少走彎路,以此分享我處理這個報錯的經驗。
這個錯誤很明顯是無法加載到指定的動態鏈接庫,但是為什么無法加載確沒有具體顯示出來,是路徑不對呢,還是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.路徑問題,最好是絕對路徑。