System.loadLibrary("Something")
将根据平台加载libSomething.so
或Something.dll
。它将在目录列表(java.library.path
)中搜索它,并将加载它找到的第一个(我认为)。
我想知道加载的.so
/ .dll
的完整路径。有ClassLoader.findLibrary(String libname)
完全符合我的要求,但它是protected
。
解决方法选项可以是使用System.mapLibraryName(String)
从库名称中创建特定于平台的文件名,然后拆分并遍历java.library.path
系统属性。我认为对于大多数情况,它会给出与ClassLoader.finLibrary
相同的结果,但是它会适用于所有情况吗?
这项任务是否有最佳实践?