Java program Opencv unsatisfiedlinkerror

Java program Opencv unsatisfiedlinkerror

本文关键字:unsatisfiedlinkerror Opencv program Java      更新时间:2023-10-16

我有一个设计用于在Linux环境中运行的Java应用程序,使用Opencv和Eclipse开发 - Ubuntu 14.04。它在 Eclipse 中运行良好,并在导出时产生.jar。该程序.jar安装opencv的系统上运行良好。

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

安装 opencv 的库具有所有 so 文件和指向 so 文件的链接,当我在 libopencv_java310.so 上执行 ldd 时,它会显示所有关联的 so 文件/链接。

但是,在未安装 opencv 的计算机上:

我已经能够携带库并使用 ln 命令创建所有链接,但我仍然得到

java.lang.unsatifiedlinkerror:/my/lib/libopencv_java310.so: libopencv_core.so.3.1:无法打开共享对象文件:没有此类文件或 目录

我在libopencv_java310.so上做了一个ldd,结果是libopencv_core.so.3.1=>找不到 - 在opencv库中找不到的几个之一。

链接libopencv_core.so.3.1与所有其他正确的链接文件及其相应的 so 文件一起位于目录中。我在这里错过了什么?我知道我需要获取libopencv_java310.so才能找到链接,但我不知道如何。

本练习的终点是制作一个自包含的可执行文件、.jar或 lib 文件和.jar的组合,以分发给 linux 环境中的最终用户。

答案是 Opencv 库需要存储在安装机器上与生产机器完全相同的目录中。 就我而言,在生产计算机上的初始安装过程中,我可能没有使用正确的目录 - 将 opencv 库存储在我的工作区中。

首先,我在安装 PC /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这些库在 opencv_java310.so 的 ldd 输出中也被突出显示为缺失

最后,我能够执行程序java - Djava.library.path="/home/me/OpenCv/opencv-3.1.0/build/lib" -jar program.jar

我的下一步是使用 shell 或其他一些实用程序和 zip 文件来自动执行此过程以包含所有数据。 我怀疑我应该从ldd opencv_java310.so输出中携带所有库文件并创建链接,以防安装机器没有任何链接。