我在加载我的Java代码中的 dll文件夹文件中的dll时遇到问题。为了简单起见 - 我尝试在 exampleTest.java 中执行load dll,但我得到 UnsatisiefLinkException 。
我试过了:
InputStream in = this.getClass().getClassLoader().getResourceAsStream("../dll/file.dll");
但它不起作用。有谁知道如何解决这个问题?
答案 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?
如果你试图更好地描述你真正想要实现的目标,那么理解和提供准确答案会更容易。