Leap Motion Java SDK, java.library.path

Я использую LeapJava.jar для написания простой программы JDK для взаимодействия с Leap. Я примерно следовал этой статье: Разработка для Leap Motion контроллер на Scala и по идее все очень просто. Однако, когда я пытаюсь запустить программу, она завершается с ошибкой RuntimeException при попытке подключиться к устройству Leap:

Native code library failed to load. 
java.lang.UnsatisfiedLinkError: no LeapJava in java.library.path
java.lang.RuntimeException: Nonzero exit code: 1
  at scala.sys.package$.error(package.scala:27)

Я выполнил шаги, описанные в документации Leap, но поскольку я Я использую Ubuntu (и sbt), нет четких инструкций, непосредственно относящихся к этой ситуации. Я пробовал разные параметры для аргумента java.library.path:

  • указывая на каталог ./lib в проекте (который содержит LeapJava.jar)
  • используя каталог lib Leap SDK
  • абсолютный путь к каталогу lib Leap SDK
  • каталог x86 в каталоге lib LeapSDK
  • символическая ссылка на файл LeapJava.jar в каталог x86 и использование этого

У меня возникает та же проблема с запуском в IntelliJ (настройка, как описано в документах Leap, ссылка на которые приведена выше) или из командной строки. например

sbt -Djava.library.path=.:/<path to LeapSDK>/lib run

Я добавил LeapJava.jar в путь к классам в sbt (он находится в каталоге lib), и проект компилируется нормально.

Любые советы (особенно, поскольку я работаю в Linux, который плохо документирован) будут приветствоваться.


person adamnfish    schedule 30.11.2013    source источник
comment
Одна вещь, на которую следует обратить внимание: если собственная библиотека 32-разрядная, вам нужно будет использовать 32-разрядную JVM, а если она 64-разрядная, вам нужно будет использовать 64-разрядную JVM. 32-битная JVM не может загрузить 64-битную собственную библиотеку и наоборот.   -  person Jesper    schedule 02.12.2013


Ответы (3)


Скопируйте файлы .dll в папку проекта (ваш текущий рабочий каталог), так как он ищет собственные библиотеки в этой конкретной папке.

person Mohammed Ali    schedule 21.01.2015
comment
Это сработало для меня. Я скопировал все файлы из sdk/lib/x64 в корневую папку моего проекта netbeans. - person Quazi Irfan; 22.02.2015

Из Readme в пакете Leap Motion Linux:

В. ...Sample.java компилируется, но при попытке запуска я получаю сообщение об ошибке о невозможности загрузки libLeapJava.so

О. Кажется, у Java возникают проблемы с поиском нативных библиотек без какого-либо руководства. Попробуйте: LD_LIBRARY_PATH=. java -classpath .: Пример LeapJava.jar

похоже, предполагается, что файл jar и собственные библиотеки находятся в той же папке, что и ваше приложение.

person Charles Ward    schedule 04.12.2013

У меня все получилось в eclipse на Ubuntu, выполнив следующие действия.

1) Выберите свой проект в области проводника пакетов и щелкните его правой кнопкой мыши.

2) Выберите Путь сборки → Настроить путь сборки....

3) В появившемся окне выберите вкладку Библиотеки.

4) Затем разверните параметр Системная библиотека JRE и выберите расположение собственной библиотеки.

5) Нажмите кнопку «Изменить» на правой панели.

6) щелкните внешнюю папку.

7) перейдите к загрузке SDK .../LeapSDK/lib/x64

если у вас 32-битная система, используйте x86

Теперь вы сможете использовать LeapJava.jar без ошибок.

person kpie    schedule 20.02.2015