Использование maven для создания / развертывания / использования проектов с JNI - PullRequest
4 голосов
/ 13 мая 2009

Я пытаюсь использовать maven для создания проекта, который зависит от JNI-оболочки вокруг библиотеки компьютерного зрения OpenCV. Я смог "maven-ize" обёртки OpenCV здесь: http://ubaa.net/shared/processing/opencv/ с помощью плагина NAR maven от FreeHEP, но документации для этого плагина немного не хватает.

Мне удалось создать проект (imagedetect), который зависит от проекта jni OpenCV (я называю это OpenCVJava). imagedetect скомпилирует, однако, любой тест, интеграция-тест или цель пакета завершится неудачно с ошибкой о библиотеках, отсутствующих в java.library.path.

!!! required library not found : no OpenCV in java.library.path
Verify that the java.library.path property is correctly set and 'libcxcore.so', 'libcv.so', 'libcvaux.so', 'libml.so', and 'libhighgui.so' are placed (or linked) in one of your system shared libraries folder

Это особенно расстраивает - единственный известный мне способ решить эту проблему - каким-то образом отследить файл .nar для библиотек opencv, извлечь их вручную, установить java.library.path и затем вызвать команду gnaraly java на самом деле выполнить тесты / приложения с правильным путем к classpath / библиотеке. Это не сработает, особенно если эта проблема сохраняется в переходных зависимостях.

Как я могу сделать эту сборку / тестирование / выполнение системы чище? Я не настроен на FreeHEP, но я хотел бы придерживаться maven, так как он делает наши наиболее распространенные варианты использования намного проще.

Плагин FreeHEP Nar: http://java.freehep.org/freehep-nar-plugin/intro.html

1 Ответ

4 голосов
/ 13 мая 2009

Я не знаком с FreeHEP, но если у вас возникли проблемы с настройкой java.library.path на surefire для запуска ваших тестов, я нашел пример на: http://buildanddeploy.com/node/14 Публикация немного сложна, но показывает, как заставить maven скопировать нативные библиотеки в каталог, куда вы затем указываете свой java.library.path. Я использовал подобный подход сам в прошлом.

Также, глядя на ошибку, вам нужно было установить LD_ LIBRARY_ PATH, чтобы исправить это? Если это так, вы должны получить этот набор и в Maven.

Вот пример того, как установить это для наверняка (от http://docs.codehaus.org/display/MAVENUSER/Projects+With+JNI): Maven-безошибочный-плагин один раз мишень / tmplib java.library.tmpdir мишень / tmplib

...