从Java获取本机动态库文件扩展名

时间:2014-07-31 17:06:58

标签: java dll cross-platform shared-libraries native-code

在Java中,有没有办法查询当前平台的动态库文件扩展名仅使用JDK或javax库?例如,定义的系统属性?

作为第二种选择,是否有第三方Java库可以做到这一点?

作为第三种选择,问题是如此微不足道,我可以轻松地推出自己的(例如 .dll在Windows,.so其他地方)?

2 个答案:

答案 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 如何决定正确的动态库扩展名。