Hadoop error no opencv_java in java library path

首先要确保你的opencv在linux上安装编译没有问题,我的环境是ubuntu14.0.4 opencv3.0 Hadoop2.7.1 我采用完全分布式,4个节点,一个主节点,3个从节点,在主节点安装eclipse,eclipse安装了Hadoop-eclipse-plugin拆插件,把你写好的mapreduce程序鼠标右run->run on hadoop 其实是在本地跑,只是调用的hdfs上的文件而已,是单机再跑。如果没问题说明你的opencv环境是好的。但是打成runnable jar 放Hadoop上运行各种报错,首先是

解决方法:

可以设置java.library.path指定到你的opencv生成的so库文件,我的是在/usr/local/share/OpenCV/java里面。但是这样对有些人没用,因为你设置了java.library.path指定的文件夹,但是当你运行Hadoop的时候,java.library.path根本没之指过去。

网上一些方法:

1:指定Native library location的位置,但是没用。Hadoop运行的时候你可以用

Text text = new Text(System.getProperty("java.library.path"));
        context.write(text , "xxxxx");

输出他的java.library.path,根本没之指过去。

网上的还一种方法:在~/.bashrc里面设置export LD_LIBRARY_PATH=/usr/local/share/OpenCV/java

但是我安装上面的代码输出Hadoop运行时的java.library.path也没包含我设置的这个路径。

我的解决办法:创建/usr/local/share/OpenCV/java/libopencv_javaxxx.so 的软连接到${HADOOP_HOME}/lib/native里面。为什么要放这里面,因为我使用

Text text = new Text(System.getProperty("java.library.path"));
 context.write(text , "xxxxx");

的时候输出文件里面${HADOOP_HOME}/lib/native是在java.library.path里面。让后打包fatjar,然后输入命令Hadoop jar xxx.jar

no opencv_java in java library path问题解决了,但是又报错

你们的可能和我不一样,这个问题是我调用mat函数才报这个错,

解决方法

把在驱动类里面的System.loadLibrary(Core.NATIVE_LIBRARY_NAME);注释,这段话应该放到map函数里面

问题解决,翻了很都博客,都是问的没有解决方案,包括很多外国网站也访问了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值