0

我在 OpenCV linux 版本上做了一个 cmake,它创建了所有需要的共享对象(库)。我什至可以在我的系统上使用 JNI 从 Java 调用使用这些库的示例 OpenCV 程序。它正在运行。但是当我尝试使用 Hadoop Mapper 加载 libhighgui.so.2.0 时

System.load("path/to/libhighgui.so.2.0");

我得到错误:

UnsatisfiedLinkError:/path/to/libhighgui.so.2.0: libjpeg.so.62: cannot
open shared object file: No such file or directory

有趣的是,OpenCV 上的 CMake 并没有创建这个 libjpeg.so。

您有任何帮助/解决方案吗?提前致谢..

编辑:其他库正在成功加载,我正在使用分布式缓存来分发共享库。

4

1 回答 1

2

ldd path/to/libhighgui.so.2.0命令行上的 yield 是什么?

您的共享库依赖于其他共享库,并且这些共享库在运行时在标准库路径上不可用。

您需要确保您的库所依赖的所有 .so 也在每个集群节点的库路径上(或者像 /lib 这样的标准系统路径,或者您需要修改 java.library.path 系统属性包括一个非标准目录 - 或者也只是使用 DistributedCache 推送它们,因为它将本地文件夹添加到库路径)

于 2012-04-24T14:47:07.477 回答