找不到so的問題,in thread “main“ java.lang.UnsatisfiedLinkError: no xxlibrary in java.library.path

鼾聲鼾語發表於2020-12-21

Exception in thread “main” java.lang.UnsatisfiedLinkError: no SecurityAccessRTDlibrary in java.library.path
以上的報錯是因為我在windows平臺,執行了基礎so庫
一般應該直接執行的android平臺,拿個手機或者pad用的,哎呀,大意了!

知識1,
System.out.println(System.getProperty(“java.library.path”))
列印出java.library.path的路徑。表示我的路徑亂七八糟,遂棄。
一步步除錯,到ClassLoader類裡,發現尋找庫的時候檔案會被莫名其妙的拼上一個lib,剛開始以為是路徑沒有配好,後來發現是系統呼叫了一個方法:java.lang.System.mapLibraryName()罪魁禍首。這個方法會在我們們的給定的名字前拼接上”lib”
知識2,
錯誤分析
這個錯誤是so庫載入問題,報錯一般以 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader開頭。一般是程式在執行過程中呼叫System.loadLibrary(“xxxxxxxx”);是無法找到libxxxxxx.so檔案導致的報錯。針對這個錯誤我們可以一邊排查一邊來解決。

問題分析和解決
1.檢視so庫是不是已經在編譯的過程中打包到apk裡。
方法:
找到專案的這個目錄app\build\outputs\apk,然後用壓縮軟體開啟app-debug.apk這個檔案,去libs裡找有沒有報錯的libxxxxxx.so檔案。
解決:
如果有就下一步,沒有就檢查自己是不是把libxxxxxx.so檔案沒有放在正確的

相關文章