Java:加载共享库时出错:libjli.so

Java:加载共享库时出错:libjli.so

我尝试安装 openjdk6、openjdk7、oracle8......但是当我想要执行 java 时总是出现同样的错误,例如java -version

java:加载共享库时出错:libjli.so:无法打开共享对象文件:没有此文件或目录

我尝试使用符号链接来识别libjli.so,但没有成功

卸载所有版本后,按照此处显示的步骤操作如何彻底卸载Java?,然后再次安装,错误仍然无法消失。即使我再次卸载所有内容,如果我在终端中写入,java -version它仍然会抛出相同的错误。

我使用用户 sudo 执行所有这些操作。

谢谢

编辑:使用 Ubuntu 14.04 LTS 服务器

编辑2:安装 Openjdk7、Oracle7 和 Oracle8,使用update-alternatives --config java告诉我(西班牙语,但我会尝试翻译,3 行信息)

/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java“无需配置的 Java 链接组中只有一个替代方案。”

“更新替代方案:警告:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java由于 Java 链接组已损坏,因此强制重新安装替代方案”

“更新替代方案:警告:/usr/bin/java不会被链接替换”

答案1

我在 chroot 环境中遇到了这个问题,并通过此操作修复了它

mount --bind /dev /myroot/dev
mount --bind /proc /myroot/proc

答案2

最终找到解决办法:

rm /usr/bin/java
update-alternatives --config java

现在删除那个二进制文件就可以了,它之前会造成问题。不知道有update-alternatives没有效果,但是最后一个警告没有出现。

答案3

当我创建到 java 可执行文件的硬链接并尝试执行它时,我遇到了这个问题。我推测它正在使用可执行二进制文件的相对路径来查找其库。

我尝试了这两个选项,并且每个选项都对我有用:

  • 将硬链接放在与 java 二进制文件相同的目录中并从那里运行它(在我的情况下是 /usr/lib/jvm/openjre-8/bin)
  • 创建并使用符号链接而不是硬链接(即使用ln -s $(which java) /usr/bin/${my_binary_name}

答案4

什么与我一起工作不是使用java下的

$JAVA_HOME/bin/

但使用java下的

$JAVA_HOME/jre/bin

它已经有了指向缺失库的链接。

当我使用 oracle jdk 8 v 191 和 eclipse 时发生了这种情况

并且它对 openjdk 的作用相同,您可以使用

/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java

相关内容