0

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

项目结构

我试过了:

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

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

4

5 回答 5

0

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

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

这实际上是一个包装:

Runtime.getRuntime().loadLibrary(Paths.get("/dll/file.dll").toString())
于 2012-08-13T10:07:22.480 回答
0

可能会尝试这样的事情。

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

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

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

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

于 2012-08-13T10:05:33.693 回答
0

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

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

InputStream in = this.getClass().getClassLoader().getResourceAsStream("dll/file.dll");
于 2012-08-13T10:01:07.790 回答
0

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

InputStream in = this.getClass().getClassLoader().getResourceAsStream("/dll/file.dll");
于 2012-08-13T09:56:48.683 回答
0

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

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

getResourceAsStream("/dll/file.dll")

检查这篇文章。这是关于另一个问题,但我认为要点是相同的。

于 2012-08-13T09:59:13.980 回答