来自JNA Javadoc:
图书馆搜索路径 搜索给定的库将扫描以下位置:
你可以 设置系统属性
jna.library.path
用户可自定义的路径jna.platform.library.path
特定于平台 路径- 在OSX上,
~/Library/Frameworks
,/Library/Frameworks
,和 我会搜索/System/Library/Frameworks
具有与所请求的名称对应的名称的框架。绝对 框架的路径也被接受,或者以框架结束 name(sans" .framework")或共享框架的完整路径 库(例如CoreServices.framework / CoreServices)。- Context类加载器类路径。部署本机库 可以安装在类路径下
${os-prefix}/LIBRARY_FILENAME
,在哪里${os-prefix}
是Platform.getNativeLibraryResourcePrefix()
返回的OS / Arch前缀。 如果捆绑在jar文件中,则将资源提取到jna.tmpdir
用于加载,后来被删除(但仅限于jna.nounpack
是假的或未设置)。jna.debug_load=true
以生成JNA 将其库搜索的步骤打印到控制台。
第4点说,即使我不添加库,也可以从类路径加载库。我的问题是这些库(对于我的示例OpenGL32.dll)如何最终在java类路径上,以及如何判断类路径中是否包含指定的库。