我的Java应用程序使用DLL库。如何从JAR文件中获取它?
DLL位于项目的sources文件夹中。我必须将它包含在我的JAR中,在运行时提取它(在jar的同一目录中)并加载它。
答案 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
是持有静态方法的类