有关loading share object file libjvm.so: xxxxx 的那些问题

时间:2021-08-02 11:22:58

今天在跑一个有关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

输出如下:

有关loading share object file libjvm.so: xxxxx 的那些问题

有关loading share object file libjvm.so: xxxxx 的那些问题

既然是编译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

设置好该变量后,再次运行测试程序,不再报此错误,可以正常运行了。