2015-01-21 3 views
2

Я пытаюсь использовать opencv 2.4.9. с maven, у меня есть два файла - первый - это java-файл, который находится в проекте maven, а второй - это java-файл со всеми импортными файлами opencv, но этот файл находится в одном пакете, я вызываю функцию второй java-файл с первого. Два файла прекрасно работает отдельно, как Java проект, но когда я пытаюсь запустить полный проект Maven он бросает эту ошибку - (java.lang.NoClassDefFoundError: орг/OpenCV/ядро ​​/ ядро)Ошибка NoClassDefFound из-за System.loadLibrary (Core.NATIVE_LIBRARY_NAME)

и сборки выходит из строя.

После много исследований я узнал, что проблема в основном связана с System.loadLibrary (Core.NATIVE_LIBRARY_NAME); , который используется для загрузки библиотек opencv. Чтобы исправить это, есть решения для добавления opencv.dll в папку java, но так как я работаю os x 10.9.5, у меня нет dll, поскольку они находятся в папке сборки под opencv, но папка build только если мы установили opencv, и я не могу найти файл .dmg для opencv. Что мне делать?

PS: Это мой первый пост на SO.

ответ

1

После долгих проб и испытаний, непосредственно указав путь к opencv.dll в System.loadLibrary («полный путь к opencv.dll»), кажется, сделал трюк, но в Mac проблема остается таким, каким я не имею .dll или .so или .dylib для opencv в Mac.

0

Хотя я никогда не использовал OpenCV:

Там является X скачать Mac OS от OpenCV

Я предполагаю, что должен быть opencv.dll эквивалентную исходную библиотеку (opencv.jnilib?) в opencv-пакете для Mac OS X и загрузку ее с помощью System.loadLibrary может решить проблему.

Существует изделие для, как загрузить исходную библиотеку на Mac OS X.


Может быть уместным:

+0

Быстрый поиск показал opencv.jnilib, такой как https://github.com/Tkres/DC32_MConvo/tree/master/libraries/OpenCV (не уверен, что это безопасно, поэтому, пожалуйста, убедитесь, что). – mon

+0

Эй! спасибо за ответ, и я выполнил все шаги, приведенные в этом учебнике, но после завершения каждого шага я получил следующее: (java.lang.UnsatisfiedLinkError: /Library/Java/Extensions/libOpenCV.jnilib: dlopen (/ Library/Java/Extensions) /libOpenCV.jnilib, 1):. нет подходящего изображения не найдены ли найти: \t /Library/Java/Extensions/libOpenCV.jnilib: неизвестный тип файла, первые восемь байт: 0x0A 0x0A 0x0A 0x0A 0x3C 0x21 0x44 0x4F) кажется .jnilib не распознается. Я надеюсь, что вы можете помочь. – mpratap

+0

Помимо этого, я не могу понять, для чего нужен 4-й шаг? И как именно я его использую? – mpratap

0

Это старый вопрос, но без ответа. Для меня это решает проблему для System.loadLibrary (Core.NATIVE_LIBRARY_NAME): https://stackoverflow.com/a/35112123

+0

Я не уверен, что вы имеете в виду? Не могли бы вы уточнить? Вы имеете в виду, что связанный вопрос о переполнении стека решил аналогичную проблему для вас? – Kmeixner

+0

В Windows вы можете указать путь для dll, на MAC у вас его нет. Таким образом, чтобы исправить ошибку при использовании System.loadLibrary (Core.NATIVE_LIBRARY_NAME) в MAC, я загружаю и компилирую opencv с помощью brew install opencv3 --with-java --with-python3. Он будет установлен в/USR/местные/Подвал/opencv3/XXX/доли/OpenCV/Java Link libopencv_javaXXX.so к libopencv_javaXXX.dylib: пер -s libopencv_javaXXX.so libopencv_javaXXX.dylib Теперь добавьте/USR/местные/Cellar/opencv3/XXX/share/OpenCV/java как родной –

0

Для Ubuntu Linux, я получил подобную проблему, которая не может найти родную библиотеку, которая на самом деле является libopencv_javaxxx.so (хая версия) , который фактически установлен в/USR/Lib/JNI/не как другие родные библиотеки, установленные под/usr/lib/x86_64-linux-gnu/

Моя первая мысль для родной библиотеки - это libopencv_core.so, и вообще нет libopencv.so.

Смежные вопросы