Исключение нарушение прав доступа при обращении к LeapMotion API в OSGi для


Я пытаюсь использовать новый сенсор Leap Motion в OSGi (Felix), но в итоге получаю 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" работает для меня (был протестирован с другими bunbles

После декомпилировав банку с прыжковыми движениями, я увидел, что это LeapJava.dll-это единственная библиотека, которая загружается (с помощью System.loadLibrary ("LeapJava")). Возможно ли, что они не загружают свою другую библиотеку правильно?

Есть идеи?

Edit 1: Как было введено разработчиком Felix, эта ссылка может быть полезной http://wiki.osgi.org/wiki/Dependencies_In_Native_Code

1 2

1 ответ:

С помощью Нейла Бартлетта и чтения Dependencies_In_Native_Code, Мне в конечном итоге удалось заставить скачкообразное движение работать в OSGi.

Вот что я сделал:

  • Оба Прыжка.dll и LeapJava.dll находятся в папке x86 в моем пакете (я на WindowsXP 32bits)
  • Добавил следующее в мой META-INF / MANIFEST.МФ:

    <Bundle-NativeCode>
        x86/Leap.dll;x86/LeapJava.dll;processor=x86;osname=win32
    </Bundle-NativeCode>
    
  • В моем коде, перед созданием ком.скачка.прыгать.Контроллер , я назвал системой.loadLibrary ("прыжок") для предварительной загрузки прыжка.DLL-библиотека. Следуя правилам, описанным в Dependencies_In_Native_Code , мне нужно только предварительно загрузить Leap.dll потому что Леапджава.dll загружается с помощью Leap Java API.