Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从JAR中提取并加载DLL_Java_Dll_Jar_Java Native Interface - Fatal编程技术网

Java 从JAR中提取并加载DLL

Java 从JAR中提取并加载DLL,java,dll,jar,java-native-interface,Java,Dll,Jar,Java Native Interface,我的Java应用程序使用DLL库。我怎样才能从JAR文件中得到它 DLL位于项目的“源”文件夹中。我必须将它包含在我的JAR中,在运行时提取它(在JAR的同一目录中)并加载它。在尝试加载它之前,您需要将dll放入库路径(推荐)。因此,您必须从jar中提取它并将其复制到lib路径中 private void loadLib(String path, String name) { name = System.mapLibraryName(name); // extends name with .

我的Java应用程序使用DLL库。我怎样才能从JAR文件中得到它


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

在尝试加载它之前,您需要将dll放入库路径(推荐)。因此,您必须从jar中提取它并将其复制到lib路径中

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
是保存静态方法的类

编译器找不到FileUtils和IOUtiles您需要在类路径
System.getProperty(“java.library.path”)中添加jar//对于win machine,我记得它的
C:\\windows\\system32
线程“main”java.lang.UnsatifiedLinkError:java.library.path中没有j3dcore ogl:(它只是意味着dll没有被提取到lib路径。