2

我正在尝试在 OSGi (Felix) 中使用新的Leap Motion传感器,但最终得到了 EXCEPTION_ACCESS_VIOLATION。

在我的清单中,我声明了 Bundle-NativeCode 例如

<Bundle-NativeCode>
   x86/Leap.dll;x86/LeapJava.dll;osname=win32;processor=x86
</Bundle-NativeCode>

当然:

  • 在 OSGi 之外具有相同库的简单程序可以正常工作
  • 这两个库在我的“x86”文件夹中
  • "osname=win32;processor=x86" 对我有用(已经用其他包测试过

反编译 Leap Motion jar 后,我看到 LeapJava.dll 是唯一加载的库(使用 System.loadLibrary("LeapJava"))。他们是否有可能没有正确加载其他库?

任何想法?

编辑 1:正如 Felix 开发人员介绍的那样,此链接可能会有所帮助http://wiki.osgi.org/wiki/Dependencies_In_Native_Code

4

1 回答 1

2

Neil Bartlett的帮助下,以及对Dependencies_In_Native_Code的阅读,我最终设法让 Leap Motion 在 OSGi 中工作。

这是我所做的:

  • Leap.dll和LeapJava.dll都在我的包中的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 加载的。

于 2013-07-29T13:06:34.697 回答