Попытка сделать java-приложение (исполняемый Jar), ​​использующее переносимый OpenCV. Получение ошибки неудовлетворенной ссылки

Я сделал приложение для захвата видео с веб-камеры и обнаружения движения с использованием OpenCV и JavaCV. Я пытаюсь экспортировать как исполняемый файл jar, используя eclipse. Программа отлично работает в eclipse, как и exe-файл на компьютере, на котором я закодировал программу.

То, что я пытаюсь сделать, это запустить exe Jar на компьютерах, на которых не установлен OpenCV. В основном то, что я бы назвал портативным приложением. Когда я запускаю exe jar на другом компьютере, на котором не установлено ничего, кроме JRE, я получаю неудовлетворенные ошибки ссылки, показанные ниже.

Exception in thread "Video Thread" java.lang.UnsatisfiedLinkError: C:\Users\JohnD\AppData\Local\Temp\javacpp91062429652918\jniopencv_core.dll: Can't find dependent libraries
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(Unknown Source)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.load0(Unknown Source)
    at java.lang.System.load(Unknown Source)
    at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:566)
    at com.googlecode.javacpp.Loader.load(Loader.java:489)
    at com.googlecode.javacpp.Loader.load(Loader.java:431)
    at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:136)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_imgproc.<clinit>(opencv_imgproc.java:97)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.googlecode.javacpp.Loader.load(Loader.java:453)
    at com.googlecode.javacv.cpp.opencv_highgui.<clinit>(opencv_highgui.java:85)
    at com.googlecode.javacv.OpenCVFrameGrabber.start(OpenCVFrameGrabber.java:174)
    at VideoPanel.run(VideoPanel.java:163)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsatisfiedLinkError: no opencv_core244 in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:593)
    at com.googlecode.javacpp.Loader.load(Loader.java:481)
    ... 13 more

Я искал решение того, что я делаю неправильно. Большинство тем, с которыми я столкнулся с ошибками неудовлетворенных ссылок, подобных тем, которые я получаю, пытались запустить их в первый раз в IDE, что здесь не так. Я думаю, что мои зависимости верны в библиотеках в пути сборки, поскольку я могу заставить его работать идеально, когда я нахожусь на компьютере, на котором все установлено, но я все еще считаю, что делаю что-то не так со сборкой.

Я снова пытаюсь сделать так, чтобы Jar мог работать на компьютерах, на которых не установлен OpenCV/JavaCV. Любая помощь будет принята с благодарностью.


person 11fish    schedule 29.04.2013    source источник


Ответы (1)


Если opencv не установлен на целевой машине, вам необходимо доставить необходимый файл dll opencv и установить соответствующий путь к библиотеке, opencv является предварительным условием javacv

Например:

jar yourapp.jar -Djava.library.path="/path/to/OpenCV/library"

также проверьте этот ответ

person Nikson Kanti Paul    schedule 12.05.2013