簡體   English   中英

如何在調用JNA Native.loadLibrary之前檢查DLL / SO,以避免UnsatisfiedLinkError

[英]How to check for DLL/SO before calling JNA Native.loadLibrary to avoid UnsatisfiedLinkError

我正在使用JNA加載本機庫(ffmpeg),但需要在實際調用Native.loadLibrary()之前檢查DLL / SO文件是否存在。 FFMPEG可能並不總是安裝在系統中(需要單獨下載)。

Native.loadLibrary()引發錯誤,您無法使用try {} catch {}捕獲該錯誤。

在實際調用loadLibrary()之前,如何檢查該庫(DLL或SO)是否存在? 我是否只需要解析PATH環境變量並檢查一下自己? 我將不得不針對Windows和Linux進行檢查,並確保安裝了正確的32 / 64bit .dll或.so ???

我希望loadLibrary只是返回一個空指針或拋出一個異常,而不是一個錯誤(錯誤的設計)。

沒關系,我找到了簡單的解決方案。

您可以抓住錯誤。 我以為你做不到 我一直使用try {} catch(Exception e){}來捕獲所有異常,但不能捕獲Errors。 我需要改用try {} catch(Error e){}或catch(UnsatisfiedLinkError ule){}。

每天學些新東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM