实施了一个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
答案 0 :(得分:0)
我终于解决了我的问题。 JNA的Native.loadLibrary()
无法从jar访问任何非类元素。我将资源.dll文件复制到临时文件中,然后首先使用
System.load(tmpFile.getAbsolutePath());
然后使用Native.loadLibrary()
。这样就可以了。