我尝试安装 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