良许Linux教程网 干货合集 通过SDKMAN管理 Linux 系统上的Java 开发工具包

通过SDKMAN管理 Linux 系统上的Java 开发工具包

在本博客中,你将学习到如何使用 SDKMAN管理 Linux 系统上的几个Java 开发工具包(JDK)。 此外,除了JDK,一些软件开发工具包(SDK)也可以通过 SDKMAN 去管理。

前言

不久前,我的一位同事向我展示了他是如何使用 SDKMAN,以及如何轻松在他的 Linux 系统上维护不同版本的 JDK、Maven等等。我以前听说过 SDKMAN,当时没有花时间去仔细研究,不过现在我已经掌握了它的使用方法。

在开始使用 SDKMAN 之前,我查看了我的 Linux上JDK的版本(使用的是Ubuntu 20.04.4 LTS 版本)。

首先,我查了下update-alternatives命令返回的Java版本的列表。发现我的系统里有两个Java 11版本。

Shell
$ update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/jdk-11.0.3+7/bin/java

我还通过 IntelliJ 安装过JDK,这些可以在你系统的home 目录下的.Jdks里找到。这就有了3个不同的Java版本。

Shell
$ ls .jdks/
openjdk-14.0.1                               openjdk-16.0.2
openjdk-14.0.1-intellij-downloader-info.txt  openjdk-17

所以结论就是:我已经把系统搞的一团糟了。现在,让我们看看 SDKMAN 是否能够帮助我去清理系统环境,并删除所有冗余的JDK。

安装

SDKMAN 的安装非常简单,只需要执行以下的命令

Shell
$ curl -s "https://get.sdkman.io" | bash
...
All done!


Please open a new terminal, or run the following in the existing one:

   source "/home//.sdkman/bin/sdkman-init.sh"

Then issue the following command:

   sdk help

Enjoy!!!

通过source命令读取和执行所需要的初始化文件里的命令:

Shell
$ source "/home//.sdkman/bin/sdkman-init.sh"

您可以通过请求 SDKMAN 的版本来验证安装是否成功。

Shell
$ sdk version 
==== BROADCAST =================================================================
* 2022-03-03: jbang 0.90.2 available on SDKMAN! https://github.com/jbangdev/jbang/releases/tag/v0.90.2
* 2022-03-02: quarkus 2.7.3.Final available on SDKMAN! https://github.com/quarkusio/quarkus/releases/tag/2.7.3.Final
* 2022-02-28: micronaut 3.3.4 available on SDKMAN!
================================================================================

SDKMAN 5.13.2

如你所见,最新版本也展示出来了,这对于获得最新的可用版本通知同样非常有帮助。

以上就是SDKMAN安装的全部内容。

JDK列表

您可以通过查看网站或者执行list 命令来了解哪些工具包可以通过 SDKMAN 进行安装。您也可以重新通过less这个基本命令进行分页来翻阅和搜索列表。

Shell
$ sdk list

可以通过list命令后缀java参数来获取更详细的JDK可用版本列表,当然这些可用的 JDK也可以在网站上找到。此外也可以重新通过less命令进行分页输出。

Shell
$ sdk list java

安装JDK

首先,我将要核实系统中默认使用的是哪个版本的 Java。看来我使用的是 AdoptOpenJDK 11.0.3版本,这个比我预想的要老。

Shell
$ java --version
openjdk 11.0.3 2019-04-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.3+7)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.3+7, mixed mode)

从 SDKMAN选择由Adoptium 提供的名为Eclipse Temurin 的AdoptOpenJDK,安装最新的 JDK 17 LTS 版本。

Shell
$ sdk install java 17.0.2-tem 

Downloading: java 17.0.2-tem
In progress...
Repackaging Java 17.0.2-tem...
Done repackaging...
Installing: java 17.0.2-tem
Done installing!
Setting java 17.0.2-tem as default.

再次验证下默认的 Java 的版本号,它已经更改为你刚刚安装的版本。

Shell
$ java --version
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment Temurin-17.0.2+8 (build 17.0.2+8)
OpenJDK 64-Bit Server VM Temurin-17.0.2+8 (build 17.0.2+8, mixed mode, sharing)

当然也可以通过同样的方式安装 JDK 11 LTS 版本。最后问题来了,你是否希望这个 JDK 成为默认版本?当然不是了,JDK 17才是最新 LTS 版本,理应作为默认版本。

Shell
$ sdk install java 11.0.14-tem 
Downloading: java 11.0.14-tem
In progress...
Repackaging Java 11.0.14-tem...
Done repackaging...
Installing: java 11.0.14-tem
Done installing!
Do you want java 11.0.14-tem to be set as default? (Y/n): n

默认JDK

如果您改变初衷,仍然希望使用JDK 11作为默认版本,那么您可以使用default命令来实现这一点。

Shell
$ sdk default java 11.0.14-tem 

Default java version set to 11.0.14-tem

对此验证一下:

Shell
$ java --version
openjdk 11.0.14 2022-01-18
OpenJDK Runtime Environment Temurin-11.0.14+9 (build 11.0.14+9)
OpenJDK 64-Bit Server VM Temurin-11.0.14+9 (build 11.0.14+9, mixed mode)

然后把它重新设置为 JDK 17。

Shell
$ sdk default java 17.0.2-tem 

Default java version set to 17.0.2-tem

当然也可以仅通过在终端回话中使用 use 命令来更改默认的 JDK。

Shell
$ sdk use java 11.0.14-tem 
Using java version 11.0.14-tem in this shell.

在这个命令窗口中,看到当前使用的JDK版本是JDK11。

Shell
$ java --version
openjdk 11.0.14 2022-01-18
OpenJDK Runtime Environment Temurin-11.0.14+9 (build 11.0.14+9)
OpenJDK 64-Bit Server VM Temurin-11.0.14+9 (build 11.0.14+9, mixed mode)

打开另一个终端窗口,发现JDK版本仍然是 JDK 17。需要注意的是, JAVA_HOME 环境变量也是指向正确的 Java 版本。

Shell
$ echo $JAVA_HOME
/home//.sdkman/candidates/java/current

清除其他的JDK

当前的JDK已经是通过 SDKMAN 安装的,是时候清除系统中的其他JDK了。

Shell
$ dpkg --list | grep jdk
ii  openjdk-11-jre-headless:amd64              11.0.13+8-0ubuntu1~20.04

移除openjdk-11-jre-headless:amd64

Shell
$ sudo apt remove openjdk-11-jre-headless:amd64

再次通过 update-alternatives命令进行验证,我们注意到仍然存在一个可用的Java 11的版本。

Shell
$ update-alternatives --list java
/usr/lib/jvm/jdk-11.0.3+7/bin/java

通过update-alternatives命令进行移除。

Shell
$ sudo update-alternatives --remove "java" /usr/lib/jvm/jdk-11.0.3+7/bin/java
update-alternatives: removing manually selected alternative - switching java to auto mode

通过update-alternatives命令进行验证,它已经移除了。

Shell
$ update-alternatives --list java
update-alternatives: error: no alternatives for java

但是,它并没有从文件系统中删除,需要导航到/usr/lib/jvm 目录,然后删除 JDK的目录。

Shell
$ sudo rm -rf jdk-11.0.3+7/

剩下要做的就是移除 IntelliJ 安装的 JDK。它们位于home目录下的.jdks中。导航到你的Home目录并移除.jdks目录。

Shell
$ rm -rf .jdks/

设置IntelliJ的JDK

打开 IntelliJ 导航到File – Project Structure,这也是配置 JDK 的位置。有点奇怪的是,它位于Project Structure下面,而不是通常的Settings目录下。通过点击 + 符号,你可以添加 SDKMAN JDK。

如何使用 SDKMAN管理 Linux 系统上的Java 开发工具包如何使用 SDKMAN管理 Linux 系统上的Java 开发工具包

你还需要为自己的工程选择JDK。

如何使用 SDKMAN管理 Linux 系统上的Java 开发工具包如何使用 SDKMAN管理 Linux 系统上的Java 开发工具包

构建你的工程,在日志中,你会注意到正在使用 SDKMAN JDK。

结论

SDKMAN 是一个可以用来控制不同版本且使用简单的工具,很有必要成为你开发工具包的一部分。它降低了我系统的混乱程度,让我可以很容易地控制系统里的不同版本。此外,还可以使用upgrade命令来检查是否有新的版本。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部