场景:jps: error while loading shared libraries: libjli.so: cannot open shared object
jps: error while loading shared libraries: libjli.so: cannot open shared object file: No such file..
今天用jps查看hadoop运行情况,发现如题所示的问题,网上的一个解决办法是删除/usr/bin/javac 和 /usr/bin/jar ,然后重新建立/usr/bin/javac 到jdk安装目录/bin/javac的软连接 和/usr/bin/jar 到 jdk安装目录/bin/jar的软连接,目的是为消除上次jdk卸载不彻底遗留下的影响,这篇文章的地址为:http://www.myexceptions.net/ruby-rails/959090.html。
不过按照这种方式,我操作了一遍,没有解决问题,然后我在另外一篇博客中受到启发,博客地址为:http://hi.baidu.com/fbuacikdutemp/item/4a60a3e09d86b2d4eb34c961
。不过不是按照他说的方法,他的问题是由于装了两个版本的jdk,相应的有两个jre,相应的他locate到两个libjli.so,而我只装了一个版本的jdk,即只有一个jre,不过奇怪的是我在我的jdk目录下搜索到两个libjli.so,如下图:
root@wangchangshuai:/usr/bin# find /usr/lib/ -name libjli.so
/usr/lib/jvm/jdk1.7.0_51/lib/i386/jli/libjli.so
/usr/lib/jvm/jdk1.7.0_51/jre/lib/i386/jli/libjli.so
root@wangchangshuai:/usr/bin#
由于我是直接解压的官网上的linux JDK压缩包,于是我想到libjli.so的路径没有加入到环境变量中,所以会出现我这个问题,于是解决方案出炉了
用管理员权限打开/etc/profile:
sudo nano /etc/profile
在文件的末尾加入如下语句:
export LIBJLI_PATH= /usr/lib/jvm/jdk1.7.0_51/jre/lib/i386/jli
export PATH=$LIBJLI_PATH:$PATH
然后ctrl+x 输入yes保存,然后执行如下命令使export的环境变量生效
source /etc/profile
结果:
在执行了上面的操作之后,输入jps发现可以查看hadoop运行情况了。
root@wangchangshuai:~# jps
10291 TaskTracker
4925
10097 JobTracker
10019 SecondaryNameNode
12997 Jps
9614 NameNode
9812 DataNode
root@wangchangshuai:~#