猿问

请问怎么从JAR提取并加载DLL

我的Java应用程序使用DLL库。我如何从JAR文件中获取它?

DLL位于项目的源文件夹中。我必须将其包含在我的JAR中,在运行时将其提取(在jar的同一目录中)并加载它。


梦里花落0921
浏览 229回答 1
1回答

慕慕森

尝试加载dll之前,需要将其放入库路径(推荐)。因此您将不得不从jar中提取它并将其复制到lib path中。private void loadLib(String path, String name) {  name = System.mapLibraryName(name); // extends name with .dll, .so or .dylib  InputStream inputStream = null;  OutputStream outputStream = null;  try {    inputStream = getClass().getResourceAsStream("/" + path + name);    File fileOut = new File("your lib path");    outputStream = new FileOutputStream(fileOut);    IOUtils.copy(inputStream, outputStream);    System.load(fileOut.toString());//loading goes here  } catch (Exception e) {    //handle  } finally {    if (inputStream != null) {      try {        inputStream.close();      } catch (IOException e) {        //log      }    }    if (outputStream != null) {      try {        outputStream.close();      } catch (IOException e) {        //log      }    }  }}注意:  ACWrapper是持有静态方法的类
随时随地看视频慕课网APP

相关分类

Java
我要回答