在Linux系统中如何切换不同版本的Java?

14
我手动安装了Java 8,并通过命令行(open-jdk)安装了Java 11。我是Linux的新手,不知道如何在版本之间切换。
我运行了以下命令来更改默认版本。
update-alternatives --config java

返回值:

  Selection    Path                                         Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      auto mode
  1            /opt/java/jdk1.8.0_211/bin/java               1         manual mode
  2            /usr/lib/jvm/java-11-openjdk-amd64/bin/java   1101      manual mode

并且

update-alternatives --config javac

返回值:

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

3
似乎只有OpenJDK 11安装包含JDK(即所有构建工具,包括javac),而Java 8安装包是一个纯JRE。确保两者都安装了-jdk包,就能像使用java一样使用update-alternatives来调整javac - Joachim Sauer
我如何删除我手动安装的那个? - Vandit Goel
1个回答

28

您可以使用 SDKMan,它允许我们做同样的事情。SDKMan是一个免费的开源工具,帮助我们安装和管理大约29个软件开发工具包的并行版本,如Java、Groovy、Scala、Kotlin和Ceylon。Ant、Gradle、Grails、Maven、SBT、Spark、Spring Boot、Vert.x 等。

而且它还会自动设置 _HOMEPATH 环境变量。

您可以通过运行以下命令来安装 SDKMan

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"

您可以使用以下命令列出所有Java版本

$ sdk list java

您可以使用sdk install命令安装不同版本的Java,例如:

$ sdk install java 9.0.4-open
$ sdk install java 11.0.2-open

你可以使用sdk usesdk default命令在它们之间进行切换。您可以在我的博客上阅读更多信息:如何在同一台计算机上安装多个Java版本


1
对于那些尝试执行java -versionecho $JAVA_HOME命令后发现版本仍未更改的人来说,可能需要关闭并重新打开终端才能看到变化生效。 - NewBoard
1
对于那些尝试执行 java -versionecho $JAVA_HOME 命令后发现版本仍未更改的人来说,可能需要关闭并重新打开终端才能看到变化的反映。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接