SDKMAN 管理多个版本的JDK

2,375 阅读1分钟

sdkman是一个简单易用的JDK版本管理工具,能帮你自动的在一台电脑上同时安装多种版本的JDK,当你需要使用具体的某个版本时,你只需动态的做版本切换即可;SDKMEN对大部分Java技术体系下的软件版本都能做很好的版本管理,不单只是JDK,它还可以管理Scala,groovy等JVM语言。

安装

install里面讲的很详细,步骤操作即可

# 下载并安装
[thinktik@thinkvm ~]$ curl -s "https://get.sdkman.io" | bash
# 可选操作:生效环境变量,不执行下面的命令也行,新开一个终端即可生效环境变量
[thinktik@thinkvm ~]$ source "$HOME/.sdkman/bin/sdkman-init.sh"

# 检查版本
[thinktik@thinkvm ~]$ sdk version

SDKMAN 5.13.1
[thinktik@thinkvm ~]$ 

建议: SDKMEN在安装某种SDK的时候,它需要把文件下载下来后,再对文件进行解压,然后才能继续做版本管理;这个过程中需要Linux本身有一些下载/解压工具被安装,所以我建议安装如下的工具

[thinktik@thinkvm ~]$ sudo dnf install unzip zip tar wget curl -y

如果你的电脑上没有以上的工具,很可能会遇到Download has failed, aborting!,Can not install java xxx at this time...这类问题

JDK版本管理

sdkman jdksdkman usage有全面的说明,下面我仅对JDK做演示。

查看可安装的JDK列表:

[thinktik@thinkvm ~]$ sdk list java


================================================================================
Available Java Versions for Linux 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 17.0.2.8.1   | amzn    |            | 17.0.2.8.1-amzn     
               |     | 17.0.1.12.1  | amzn    |            | 17.0.1.12.1-amzn    
               |     | 17.0.0.35.1  | amzn    |            | 17.0.0.35.1-amzn    
               |     | 11.0.14.9.1  | amzn    |            | 11.0.14.9.1-amzn    
               |     | 11.0.13.8.1  | amzn    |            | 11.0.13.8.1-amzn    
               |     | 11.0.12.7.1  | amzn    |            | 11.0.12.7.1-amzn    


......

SDKMEN版本管理

JDK管理

我们可以复制上一步中返回的Identifier内容,作为版本参数进行安装。以AWS Corretto JDK为例,安装JDK 17.0.2我们可以使用Identifier17.0.2.8.1-amzn的候选版本.

首次安装JDK也会提示你是否设置为系统的默认版本

# 安装JDK 17
[thinktik@thinkvm thinktik]# sdk install java 17.0.2.8.1-amzn

Downloading: java 17.0.2.8.1-amzn

In progress...

################################################################################################################################################################################## 100.0%

Repackaging Java 17.0.2.8.1-amzn...

Done repackaging...

Installing: java 17.0.2.8.1-amzn
Done installing!

Do you want java 17.0.2.8.1-amzn to be set as default? (Y/n): y

Setting java 17.0.2.8.1-amzn as default.
[thinktik@thinkvm thinktik]# java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-17.0.2.8.1 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.2.8.1 (build 17.0.2+8-LTS, mixed mode, sharing)
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "17.0.2" 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-17.0.2.8.1 (build 17.0.2+8-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.2.8.1 (build 17.0.2+8-LTS, mixed mode, sharing)

# 安装JDK11
[thinktik@thinkvm thinktik]# sdk install java 11.0.12-open

java 11.0.12-open is already installed.
# 动态的切换JDK版本为JDK11
[thinktik@thinkvm thinktik]# sdk use java 11.0.12-open

Using java version 11.0.12-open in this shell.
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment 18.9 (build 11.0.12+7)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.12+7, mixed mode)

# 安装JDK8
[thinktik@thinkvm thinktik]# sdk install java 8.0.292-open

Downloading: java 8.0.292-open

In progress...

################################################################################################################################################################################## 100.0%################################################################################################################################################################################## 100.0%

Repackaging Java 8.0.292-open...

Done repackaging...

Installing: java 8.0.292-open
Done installing!

Do you want java 8.0.292-open to be set as default? (Y/n): n
# 动态的切换JDK版本为JDK8
[thinktik@thinkvm thinktik]# sdk use java 8.0.292-open

Using java version 8.0.292-open in this shell.
# 检查JDK版本
[thinktik@thinkvm thinktik]# java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

所以我们可以看到使用SDKMEN做JDK的版本管理很方便

其他SDK管理

SDKMEN除了可以管理JDK外也可以管理其他的SDK,比如Groovy,Scala.细节请看sdks

比如scala的管理:

  • 安装scala: sdk install scala 3.1.0
  • 卸载scala: $ sdk uninstall scala 3.1.0