从JAR中提取并加载DLL

时间:2011-01-21 22:10:57

标签: java dll jar java-native-interface

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

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

1 个答案:

答案 0 :(得分:25)

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

private static void loadLib(String path, String name) {
  name = System.mapLibraryName(name); // extends name with .dll, .so or .dylib
  try {
        InputStream in = ACWrapper.class.getResourceAsStream("/"+path + name);
        File fileOut = new File("your lib path");
        OutputStream out = FileUtils.openOutputStream(fileOut);
        IOUtils.copy(in, out);
        in.close();
        out.close();
        System.load(fileOut.toString());//loading goes here
   } catch (Exception e) {
               //handle
   }
}

注意: ACWrapper是持有静态方法的类