我在加载放置在我的 Java 代码中的dll 文件夹文件中的 dll 时遇到问题。为了简单起见 - 我尝试在 exampleTest.java 中执行加载 dll,但我得到UnsatisiefLinkException。
我试过了:
InputStream in = this.getClass().getClassLoader().getResourceAsStream("../dll/file.dll");
但它不起作用。有谁知道如何解决这个问题?
如果您只想导入它,您可以随时使用 System loadLibrary 和 nio.Paths,如下所示:
System.loadLibrary(Paths.get("/dll/file.dll").toString());
这实际上是一个包装:
Runtime.getRuntime().loadLibrary(Paths.get("/dll/file.dll").toString())
可能会尝试这样的事情。
您不需要包含 dll,但路径应该足够了。
System.setProperty("java.library.path", "/dll" + File.pathSeparator +
System.getProperty("java.library.path"));
在执行代码之前添加上面的行。这会将 dll 路径添加到 jvm 运行时库。
它还取决于您运行应用程序的文件夹。您需要为 dll 文件夹提供相对路径。或者,您可以提供完全合格的路径,但从项目配置的角度来看,不建议这样做。
如果要将其作为资源加载,则应将dll
文件夹设置为源文件夹。右键单击文件夹 -> 构建路径 -> 用作源文件夹
然后,您可以像这样简单地加载它:
InputStream in = this.getClass().getClassLoader().getResourceAsStream("dll/file.dll");
添加dll
到运行时类路径并将您的代码更改为
InputStream in = this.getClass().getClassLoader().getResourceAsStream("/dll/file.dll");
getResourceAsStream()
将您的源文件夹视为“文件系统”的根目录。据我所知,getResourceAsStream()
如果此文件夹在文件夹之外,您将无法通过该文件夹访问文件src
夹。
如果要访问该 dll 文件,请将 dll 文件夹移动到 src 文件夹。并通过
getResourceAsStream("/dll/file.dll")
检查这篇文章。这是关于另一个问题,但我认为要点是相同的。