从Classpath加载DLL

时间:2013-10-11 15:20:18

标签: java java-native-interface

我正在尝试从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?

2 个答案:

答案 0 :(得分:0)

在应用程序启动时将-Djava.library.path=<path to library root>作为参数传递。

请参阅similar answer here

请注意调用System.load(java.lang.String)System.loadLibrary(java.lang.String)之间的差异。

答案 1 :(得分:0)

使用System.getenv()检索CLASSPATH变量,搜索您的DLL是否存在于其中一个&#39; lib&#39;变量中列出的文件夹。然后,您应该能够创建一个完整的路径名。