2016-01-30 5 views
1

Я пытаюсь использовать OpenCV в проекте Spring boot, развернутом на сервере Tomcat в качестве военного файла.Spring boot with OpenCV

Независимо от того, что я стараюсь, я получаю это:

java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path 

У меня есть классический Maven проект, в котором я тестировал код OpenCV и он прекрасно работает до тех пор, как я поставил opencv_java310 в пути к классам проекта , Я сделал то же самое и добавил эту банку к classpath моего проекта загрузки Spring, и я также добавил его в каталог src/main/webapp/WEB-INF/lib (чтобы сделать его доступным на сервере приложений).

Что еще нужно сделать, чтобы использовать OpenCV на Tomcat? Я в конце моего ума ..

EDIT: При загрузке ядра библиотеки с открытым резюме внутри теста JUnit, он загружает правильно:

@Test 
    public void testOpenCV() { 
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    } 

Но если я сделать то же самое при запуске Применения на Tomcat, я получаю исключение.

+0

относительно ваших комментариев к ответу выше, вы используете Unix, и у вас есть файл .so. Попробуйте добавить этот аргумент при запуске tomcat -Djava.library.path =/home/smajl/Software/opencv/build/lib (добавьте его в конфигурацию запуска). –

+0

Я попытался запустить Tomcat со следующим аргументом VM: -Djava.library.path =/home/smajl/Software/opencv/build/lib/libopencv_java310.so (это самый близкий .so файл, который я нашел), но исключение еще там ... – Smajl

+1

Попробуйте '-Djava.library.path =/home/smajl/Software/opencv/build/lib' вместо этого. Со значением, которое вы указали, он, вероятно, ищет '/ home/smajl/Software/opencv/build/lib/libopencv_java310.so/libopencv_java310.so' ... – ipsi

ответ

2

Это не говорит о файле JAR - кажется, что JAR-файл загружается правильно. Однако из сообщения об ошибке видно, что OpenCV использует одну или несколько собственных библиотек (например, .dll или lib*.so файлов), и она не может их найти.

Ожидается, что свойство java.library.path укажет на местоположение, содержащее родную библиотеку opencv_java310, но это не так. Я не уверен на 100%, как решить эту проблему с помощью Eclipse & Tomcat, но вам, вероятно, нужно будет найти способ либо (a) установить свойство на Tomcat, либо (b) просмотреть значение свойства и поместить собственный библиотеки в этом месте (вы можете получить его с помощью System.getProperty("java.library.path");). Быстрая проверка указывает, что вы можете разместить его в tomcat/shared/lib.

Помните, что это .dll (для Windows) или .so (для OSX, Linux, Unix) файл, и не файл JAR.

+0

Я напечатал путь java-library, и это результат:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib Как я могу найти файл, используя это? Извините за фиктивный вопрос, но я действительно запутался сейчас – Smajl

+0

EDIT: У меня также есть рабочий проект maven, который работает отлично. Поэтому я не понимаю, почему возникает эта проблема в проекте загрузки Spring с той же конфигурацией. – Smajl

+0

Это определенно немного странно. Если вы в состоянии, проверьте значение в рабочем проекте и нерабочем проекте и посмотрите, есть ли разница. Поскольку вы, кажется, находитесь на OSX или Linux, скорее всего, он ищет файл с именем libopencv_java310.поэтому 'в одном из следующих мест:'/usr/java/packages/lib/amd64', '/ usr/lib64','/lib64', '/ lib' и'/usr/lib'. Есть еще несколько возможностей, но начинайте здесь, я бы сказал. – ipsi