当项目是gradle依赖项时,Native.loadLibrary()返回null

时间:2018-12-08 01:31:49

标签: java windows intellij-idea dll jna

实施了一个Java驱动程序项目,该项目在JNA的帮助下利用了一些.dll文件。当我构建并运行时,它作为一个项目运行良好。但是,当该驱动程序项目被震撼并成为另一个更大项目的依赖项时,我无法加载.dll文件。

我正在使用Native.loadLibrary(LIBRARY_NAME, MY_INTERFACE.class)语法在驱动程序项目中加载库。该行成功将我的库加载到驱动程序项目中,但是当它依赖于另一个项目时返回null。我该如何调试并找出问题所在?

要重现此行为:

OS: Windows 10 IDE: Intellij Community 2018.2 Java: 1.8.0_191 driver project: https://github.com/ClearControl/GS16AO64c parent project: https://github.com/AhmetCanSolak/clearcontrol

1 个答案:

答案 0 :(得分:0)

我终于解决了我的问题。 JNA的Native.loadLibrary()无法从jar访问任何非类元素。我将资源.dll文件复制到临时文件中,然后首先使用

加载它们

System.load(tmpFile.getAbsolutePath());

然后使用Native.loadLibrary()。这样就可以了。