2016-01-16 7 views
2

У меня есть Java-приложение, предназначенное для работы в среде Linux, разработанное с использованием Opencv и Eclipse - Ubuntu 14.04. Он отлично работает внутри Eclipse и производит экспорт .jar. Программа .jar отлично работает в системе, где установлен opencv.Java-программа Opencv unsatisfiedlinkerror

java -Dpath.java.library="/home/me/opencv/build/lib" -jar program.jar 

библиотека, где установлен OpenCV имеет все так файлы и ссылки на файлы, так и на месте, когда я делаю LDD на libopencv_java310.so он отображает все связанные с такими файлами/ссылка aokay.

Однако на компьютере, где не установлен OpenCV:

я был в состоянии более выполнять эти библиотеки и создать все ссылки с помощью команды ¯Ln Однако я все еще получаю

java.lang.unsatifiedlinkerror: /my/lib/libopencv_java310.so: libopencv_core.so.3.1: cannot open shared object file: No such file or directory

я сделал a ldd на libopencv_java310.so и результат libopencv_core.so.3.1 =>не найден - один из нескольких не найден в библиотеке opencv.

Ссылка libopencv_core.so.3.1 находится в каталоге вместе со всеми другими файлами правильно ссылок и их соответствующие файлы так. Что мне здесь не хватает? Я знаю, мне нужно получить libopencv_java310.so, чтобы найти ссылки, но я не знаю, как это сделать.

Конечная точка этого упражнения состоит в том, чтобы сделать автономный исполняемый файл, .jar или комбинацию файлов lib и .jar для распространения среди конечных пользователей в среде linux.

ответ

0

Ответ: библиотеки Opencv должны храниться на установочной машине точно в тех же каталогах, что и производственная машина. В моем случае я, возможно, не использовал правильные каталоги во время моей начальной установки на производственной машине - хранение библиотек opencv в моем рабочем пространстве.

Во-первых, я создал те же каталоги на установочном ПК /home/me/OpenCV/opencv-3.1.0/build/lib и скопировал все библиотеки opencv с производственной машины в этот каталог.

Во-вторых, я использовал ldd /home/me/opencv_java310.so, чтобы найти библиотеки с отсутствующими ссылками.

В-третьих, я использовал ln -s library.file library.link имя для создания каждой ссылки, названной в выводе ldd.

В-четвертых, я должен был копировать и создавать ссылки для некоторых библиотек, хранящихся в системной области /usr/lib and /usr/lib/x86_64-linux-gnu, которые были выделены в качестве пропавших без вести на выходе LDD из opencv_java310.so

Наконец, я был в состоянии выполнить программу java - Djava.library.path="/home/me/OpenCv/opencv-3.1.0/build/lib" -jar program.jar

Следующим шагом будет автоматизация этого процесса с помощью оболочки или другой утилиты и zip-файлов для хранения всех данных. Я подозреваю, что я должен нести ВСЕ файлы библиотеки из вывода ldd opencv_java310.so и создавать ссылки на всякий случай, если на установочном компьютере нет ни одного из них.

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