java - 在 OSGi 中访问 LeapMotion API 时出现 EXCEPTION_ACCESS_VIOLATION

标签 java dll osgi leap-motion

我正在尝试使用新的 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.dllLeapJava.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/

相关文章:

c++ - CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS不涵盖全局变量

osgi - 使用 SlingScriptHelper#getService() 方法过滤 OSGi 服务

java - 导出项目 eclipse java 时制作多个可运行文件

java - Eclipse IDE 错误代码-13

java - 在 Ubuntu 上运行 Standalone.sh 时出现 Wildfly NoSuchMethodError

python - 在python中导入C dll函数

java - 如何编写 OSGI 命令行应用程序

java - 引用的DS OSGi服务设置后如何直接使用?

java - Tomcat 在从 jenkins 执行 shell 重新启动后停止

具有控制流枚举的 Java 解析器