【问题标题】:Java program Opencv unsatisfiedlinkerrorJava程序Opencv unsatisfiedlinkerror
【发布时间】:2016-04-22 02:42:36
【问题描述】:

我有一个设计为在 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 命令创建所有链接,但是我仍然得到 ​​p>

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 环境中的最终用户。

【问题讨论】:

    标签: java c++ linux eclipse opencv


    【解决方案1】:

    答案是 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 输出中的所有库文件并创建链接,以防安装机器没有它们。

    【讨论】:

      猜你喜欢
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      • 2016-04-27
      • 2012-07-21
      • 1970-01-01
      相关资源
      最近更新 更多