今天在跑一个有关postgresql产品的测试,要测试postgresql的有关Mirroring Controller的功能。
在执行mc_ctl命令的时候,报错:error while loading share object file libjvm.so: No such file or directory.
调查了一下发现是对LD_LIBRARY_PATH 环境变量的设置有问题,没有提供含有libjvm.so的路径,自然找不到。于是先在系统中寻找libjvm.so文件的位置:
find / -name libjvm.so
输出如下:
既然是编译server,那么就选了一条路径中含有server的添加到LD_LIBRARY_PATH变量中:
export LD_LIBRARY_PATH=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre/lib/x86_64/server:$LD_LIBRARY_PATH
再次运行,又出错了,这次报的错不太一样了 libjvm.so: no version information available.
看到这,估计你就明白了。对的,是java的版本没选对。选择的库文件的版本过低,mc_ctl命令无法识别,故报此错误。那么改正就很简单了。
再次修改LD_LIBRARY_PATH变量,选择正确版本(即选择一个高版本的库文件路径)的库文件的路径如下:
export LD_LIBRARY_PATH= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server:$LD_LIBRARY_PATH
设置好该变量后,再次运行测试程序,不再报此错误,可以正常运行了。