我正在尝试从Classpath加载Java中的DLL。我有一个名为'lib'的文件夹在Classpath上,但它的实际位置是未知的。 DLL驻留在lib/dll/(x64|win32)/library.dll
中。我可以使用此行成功加载DLL,但仅当'lib'文件夹位于当前工作目录中时:
System.load(new File("lib\\dll\\" + dllFolder + "\\library.dll").getAbsolutePath());
不幸的是,我们的用例是不可能让文件夹始终在当前工作目录中。如何从Classpath加载DLL?
答案 0 :(得分:0)
在应用程序启动时将-Djava.library.path=<path to library root>
作为参数传递。
请注意调用System.load(java.lang.String)
与System.loadLibrary(java.lang.String)
之间的差异。
答案 1 :(得分:0)
使用System.getenv()检索CLASSPATH变量,搜索您的DLL是否存在于其中一个&#39; lib&#39;变量中列出的文件夹。然后,您应该能够创建一个完整的路径名。