gpt4 book ai didi

Java程序Opencv unsatisfiedlinkerror

转载 作者:太空狗 更新时间:2023-10-29 12:43:14 25 4
gpt4 key购买 nike

我有一个旨在在 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 时它会显示所有关联的文件/链接。

但是在没有安装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

我在 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 name 创建了 ldd 输出中命名的每个链接。

第四,我必须复制并为存储在系统区域 /usr/lib 和/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 输出中的所有库文件并创建链接,以防安装机器没有任何库文件。

关于Java程序Opencv unsatisfiedlinkerror,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34829127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com