安装 Java 8 后没有 Java 命令,删除 Java 11,尽管安装后没有错误消息

安装 Java 8 后没有 Java 命令,删除 Java 11,尽管安装后没有错误消息

我在将 Java 8 安装到 Kubuntu 18.04 而不是默认的 Java 11 上遇到了很多麻烦,并且非常感激任何帮助,因为常用网站上的建议没有帮助。

在我的特定情况下,我尝试安装 Java 版本 8 来运行 Minecraft,因为它似乎无法在较新的 Java 11 上运行(至少对于 Linux 而言)[如此处所述尝试在 Ubuntu 18.04 上运行 Minecraft 时 JDK 崩溃以及这里[Minecraft 无法在 Ubuntu 18.04 中启动]

我尽力尝试sudo apt-get remove openjdk-11-jresudo apt-get purge openjdk-11-jdk和其他类似的命令,但每次输入时java -version它都告诉我它是版本 11,而不是版本 8。

最后,我按照如何完全卸载 Java 的建议进行了操作,如何彻底卸载Java?

$ dpkg-query -W -f='${binary:Package}\n' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e '^java-common' | xargs sudo apt-get -y remove
$ sudo apt-get -y autoremove
$ sudo bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf
$ sudo rm -rf /usr/lib/jvm/*
$ for g in ControlPanel java java_vm javaws jcontrol jexec keytool mozilla-javaplugin.so orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200 appletviewer apt extcheck HtmlConverter idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc xulrunner-1.9-javaplugin.so; do sudo update-alternatives --remove-all $g; done
$ sudo updatedb
$ sudo locate -b '\pack200'

最后,再也没有 Java 了!现在只需重新安装 Java 8,而不是 Java 11,所以我这样做了

$ sudo apt-get install openjdk-8-jdk
$ sudo apt-get install openjdk-8-jre

(我认为第二条命令是多余的。)

现在我没有任何 java 命令。输入“java -version”[Enter] 会导致错误,提示没有这样的命令。但是,“javac”一个有效的命令,所以显然我安装了 Java 编译器,但没有安装 Java(无论你称之为非编译器的东西)(“运行时环境”?)运行基于 Java 的程序(如 Minecraft 或 mtgForge)会导致程序在几秒钟后自行终止。

我试过:

$ update-java-alternatives --list
java-1.11.0-openjdk-amd64      1111       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64`

不确定为什么版本 11 仍然存在。我似乎无法将update-java-alternatives --set版本 8 设为默认版本(或任何默认版本)。当我尝试

update-java-alternatives --set 1081
update-java-alternatives: directory does not exist: /usr/lib/jvm/1081

然后我检查了

$ ls /usr/lib/jvm/ 
.java-1.11.0-openjdk-amd64.jinfo  .java-1.8.0-openjdk-amd64.jinfo  java-8-openjdk-amd64/

所以我尝试了:

$ update-java-alternatives --set java-8-openjdk-amd64
update-java-alternatives: file does not exist: /usr/lib/jvm/.java-8-openjdk-amd64.jinfo

这是因为文件名与目录名不同。文件名是.java-1.8.0-openjdk-amd64.jinfo

另一方面,使用容易混淆的命令

$ update-alternatives --config java
update-alternatives: error: no alternatives for java

但如果我说

$ update-alternatives --config javac
There is only one alternative in link group javac (providing /usr/bin/javac): /usr/lib/jvm/java-8-openjdk-amd64/bin/javac
Nothing to configure.

这就是我被困住的地方。我该如何获取它以便运行命令java?我已经有了命令javac。我需要安装哪个包才能获取命令java?如上所述,我已经安装了openjdk-8-jdkopenjdk-8-jre

答案1

我觉得第一段代码看起来很可疑——没有理由把它推到那个层面。

除非你正在做开发,否则你不需要 JDK

$ sudo apt-get purge openjdk-8-jdk

我将继续保留 v11 JRE(您可以拥有任意数量)并重新安装两者:

$ sudo apt-get reinstall openjdk-11-jre
$ sudo apt-get reinstall openjdk-8-jre

只要没有错误,你就可以update-alternatives --config java

相关内容