Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序Opencv未满足链接错误_Java_C++_Linux_Eclipse_Opencv - Fatal编程技术网

Java程序Opencv未满足链接错误

Java程序Opencv未满足链接错误,java,c++,linux,eclipse,opencv,Java,C++,Linux,Eclipse,Opencv,我有一个java应用程序设计为在Linux环境下运行,使用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上执行ldd时,它会显示所有相关的s

我有一个java应用程序设计为在Linux环境下运行,使用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上执行ldd时,它会显示所有相关的so文件/链接

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

我已经能够携带libs,并使用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。所以
才能找到链接,但我不知道如何找到


本练习的目的是在linux环境中向最终用户分发一个自包含的可执行文件.jar或lib文件和.jar的组合

答案是Opencv库需要存储在安装机器上与生产机器完全相同的目录中。在我的情况下,在生产机器上的初始安装期间,我可能没有使用正确的目录—在我的工作区中存储opencv库

首先,我在安装PC上创建了相同的目录
/home/me/OpenCV/OpenCV-3.1.0/build/lib
,并将所有OpenCV库从生产机器复制到该目录中

其次,我使用ldd
/home/me/opencv_java310.so
查找缺少链接的库

第三,我使用ln-s library.file library.linkname创建了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中的所有库文件输出并创建链接,以防安装机器没有任何链接