1

我正在使用 JNA 加载本机库 (ffmpeg),但我需要在实际调用 Native.loadLibrary() 之前检查 DLL/SO 文件是否存在。FFMPEG 可能并不总是安装在系统中(它是一个单独的下载)。

Native.loadLibrary() 抛出一个错误,你不能用 try {} catch {} 捕获它。

如何在实际调用 loadLibrary() 之前检查库(DLL 或 SO)是否存在?我是否必须解析 PATH 环境变量并检查自己?我必须检查 Windows 和 Linux 并确保安装了正确的 32/64 位 .dll 或 .so ???

我希望 loadLibrary 只返回一个空指针或抛出异常,而不是错误(糟糕的设计)。

4

1 回答 1

0

没关系,我找到了简单的解决方案。

你可以捕捉到错误。我以为你不能。我总是使用 try {} catch (Exception e) {} 来捕获所有异常,但不会捕获错误。我需要改用 try {} catch (Error e) {} 或 catch (UnsatisfiedLinkError ule) {}。

每天学些新东西。

于 2013-09-04T13:39:55.210 回答