从项目中的外部文件夹加载DLL库 - Java

时间:2012-08-13 09:52:03

标签: java dll load

我在加载我的Java代码中的 dll文件夹文件中的dll时遇到问题。为了简单起见 - 我尝试在 exampleTest.java 中执行load dll,但我得到 UnsatisiefLinkException

Project structure

我试过了:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("../dll/file.dll");

但它不起作用。有谁知道如何解决这个问题?

6 个答案:

答案 0 :(得分:0)

dll添加到运行时类路径并将代码更改为

InputStream in = this.getClass().getClassLoader().getResourceAsStream("/dll/file.dll");

答案 1 :(得分:0)

getResourceAsStream()将您的源文件夹视为“文件系统”的根目录。据我所知,如果此文件夹位于getResourceAsStream()文件夹之外,则无法通过src访问文件夹。

如果要访问该dll文件,请将dll文件夹移动到src文件夹。并通过

访问它
getResourceAsStream("/dll/file.dll")

检查this post。这是另一个问题,但我认为主要观点是相同的。

答案 2 :(得分:0)

如果要将其作为资源加载,则应将dll文件夹放入源文件夹中。 右键单击文件夹 - >构建路径 - >用作源文件夹

然后您可以像这样简单地加载它:

InputStream in = this.getClass().getClassLoader().getResourceAsStream("dll/file.dll");

答案 3 :(得分:0)

可以尝试这样的事情。

您不需要包含dll,但路径应该足够了。

  

System.setProperty( “的java.library.path”,                              “/ dll”+ File.pathSeparator +
  System.getProperty( “的java.library.path”));

在执行代码之前添加上面的行。这会将dll路径添加到jvm运行时库。

它还取决于运行应用程序的文件夹。您需要为dll文件夹指定相对路径。或者,您可以提供完全限定的路径,但从项目配置的角度来看,不建议这样做。

答案 4 :(得分:0)

如果您只是想要导入它,您可以随时使用System loadLibrary和nio.Paths,如下所示:

System.loadLibrary(Paths.get("/dll/file.dll").toString());

这实际上是一个包装:

Runtime.getRuntime().loadLibrary(Paths.get("/dll/file.dll").toString())

答案 5 :(得分:0)

我认为你正在尝试或多或少地完成这里所处理的事情:How to make a JAR file that includes DLL files?

如果你试图更好地描述你真正想要实现的目标,那么理解和提供准确答案会更容易。