Native.loadLibrary() returns null 当项目是 gradle 依赖项时
Native.loadLibrary() returns null when project is a gradle dependency
实施了一个 java 驱动程序项目,该项目在 JNA 的帮助下利用了一些 .dll
文件。当我构建和 运行 时,它作为一个项目工作得很好。但是,当此驱动程序项目受到干扰并成为另一个更大项目的依赖项时,我无法加载 .dll
文件。
我正在使用 Native.loadLibrary(LIBRARY_NAME, MY_INTERFACE.class)
语法在驱动程序项目中加载库。此行成功将我的库加载到驱动程序项目中,但 returns 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
我终于解决了我的问题。 JNA 的 Native.loadLibrary()
无法从 jar 访问任何非 class 元素。我将资源 .dll 文件复制到临时文件中并首先加载它们:
System.load(tmpFile.getAbsolutePath());
然后使用Native.loadLibrary()
。这样就可以了。
实施了一个 java 驱动程序项目,该项目在 JNA 的帮助下利用了一些 .dll
文件。当我构建和 运行 时,它作为一个项目工作得很好。但是,当此驱动程序项目受到干扰并成为另一个更大项目的依赖项时,我无法加载 .dll
文件。
我正在使用 Native.loadLibrary(LIBRARY_NAME, MY_INTERFACE.class)
语法在驱动程序项目中加载库。此行成功将我的库加载到驱动程序项目中,但 returns 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
我终于解决了我的问题。 JNA 的 Native.loadLibrary()
无法从 jar 访问任何非 class 元素。我将资源 .dll 文件复制到临时文件中并首先加载它们:
System.load(tmpFile.getAbsolutePath());
然后使用Native.loadLibrary()
。这样就可以了。