【发布时间】:2011-06-13 10:56:18
【问题描述】:
我的 Java 应用程序使用 DLL 库。如何从 JAR 文件中获取它?
DLL 位于项目的源文件夹中。我必须将它包含在我的 JAR 中,在运行时提取它(在 jar 的同一目录中)并加载它。
【问题讨论】:
标签: java dll jar java-native-interface
我的 Java 应用程序使用 DLL 库。如何从 JAR 文件中获取它?
DLL 位于项目的源文件夹中。我必须将它包含在我的 JAR 中,在运行时提取它(在 jar 的同一目录中)并加载它。
【问题讨论】:
标签: java dll jar java-native-interface
在您尝试加载它之前,您需要将 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是持有静态方法的类
【讨论】:
System.getProperty("java.library.path"); //win机我记得是C:\\windows\\system32