在Java中,有没有办法查询当前平台的动态库文件扩展名仅使用JDK或javax库?例如,定义的系统属性?
作为第二种选择,是否有第三方Java库可以做到这一点?
作为第三种选择,问题是如此微不足道,我可以轻松地推出自己的(例如 .dll在Windows,.so其他地方)?
答案 0 :(得分:2)
您可以使用以下API获取所需内容:
System.mapLibraryName("your_library");
在Linux上,返回的是“libyour_library.so”,在Windows上它将是“your_library.dll”。因此,如果您只对扩展感兴趣,可以执行以下操作:
final String libname = System.mapLibraryName("test");
final String libext = libname.substring(libname.lastIndexOf('.')+1);
答案 1 :(得分:-1)
"标准" Java的native-interop系统是JNA。它已经存在了很长时间,得到了很好的支持,几乎可以处理你想要的大多数本机调用场景。当然,它也支持加载动态库。
您应该考虑将JNA用于您的项目,或者将其失败,以查看 it 如何决定正确的动态库扩展名。