我正在尝试使用新的 Leap Motion OSGi (Felix) 中的传感器,但我最终得到了 EXCEPTION_ACCESS_VIOLATION。
在我的 list 中,我声明了 Bundle-NativeCode,例如
<Bundle-NativeCode>
x86/Leap.dll;x86/LeapJava.dll;osname=win32;processor=x86
</Bundle-NativeCode>
当然:
- 在 OSGi 之外使用相同库的简单程序可以正常工作
- 这两个库位于我的包中的“x86”文件夹中
- “osname=win32;processor=x86”对我有用(已与其他bundles一起测试
反编译Leap Motion jar后,我发现LeapJava.dll是唯一加载的库(使用System.loadLibrary(“LeapJava”))。他们是否有可能没有正确加载其他库?
有什么想法吗?
编辑 1:正如 Felix 开发人员所介绍的,此链接可能会有所帮助 http://wiki.osgi.org/wiki/Dependencies_In_Native_Code
最佳答案
在 Neil Bartlett 的协助下,以及 Dependencies_In_Native_Code 的读数,我最终成功地让 Leap Motion 在 OSGi 中工作。
这就是我所做的:
- Leap.dll 和 LeapJava.dll 均位于我的 bundle 中的 x86 文件夹中(我使用的是 WindowsXP 32 位)<
将以下内容添加到我的 META-INF/MANIFEST.MF 中:
<Bundle-NativeCode> x86/Leap.dll;x86/LeapJava.dll;processor=x86;osname=win32 </Bundle-NativeCode>
在我的代码中,在创建com.leapmotion.leap.Controller之前,我调用System.loadLibrary("Leap")来预加载Leap.dll 库。遵循Dependencies_In_Native_Code中解释的规则,我只需要预加载Leap.dll,因为LeapJava.dll是由Leap Java API加载的。
关于java - 在 OSGi 中访问 LeapMotion API 时出现 EXCEPTION_ACCESS_VIOLATION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17858647/