JDK多个版本如何管理?
前言
我们在开发过程中,很多时候会遇到手上同时维护多个项目的情况,因为项目历史原因,每个项目使用的JDK版本不一样。那这个时候,我们就需要随时能切换我们的JDK环境。
常规操作,就是改变JDK的环境变量的配置来进行切换,在MAC中也可以对每个jdk版本使用别名,来进行切换,但是这些都太麻烦了,有没有一个工具可以来管理这些事情呢?针对这些问题,我们的诉求就是:
- 能够管理其他版本的JDK,比如,下载新的JDK,而不影响我旧的
- 能够管理我本地原有的JDK,或者说可以将本地已经安装好的JDK纳入统一管理
- 更够快速的切换JDK版本
工具(选型)
- jenv ,一个专门管理jdk多版本的工具(在Mac上无法切换成功,win没试过)
- sdkman,SDK管理工具(不止JDK)
SDKman
安装SDKman(Mac)
在终端执行:
curl -s "https://get.sdkman.io" | bash
安装成功后,打开一个新终端或在同一 shell 中运行以下命令:
source "$HOME/.sdkman/bin/sdkman-init.sh"
验证安装结果:
sdk version
SDKMAN!
script: 5.18.2
native: 0.4.6
安装完成。
使用SDKMan
安装JDK
先看看JDK在SDKman里面有哪些源,执行:sdk ls java
sdk ls java
================================================================================
Available Java Versions for macOS 64bit
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
Corretto | | 21.0.2 | amzn | | 21.0.2-amzn
| | 21.0.1 | amzn | | 21.0.1-amzn
| | 17.0.10 | amzn | | 17.0.10-amzn
| | 17.0.9 | amzn | | 17.0.9-amzn
| | 11.0.22 | amzn | | 11.0.22-amzn
| | 11.0.21 | amzn | | 11.0.21-amzn
| | 8.0.402 | amzn | | 8.0.402-amzn
| | 8.0.392 | amzn | | 8.0.392-amzn
Gluon | | 22.1.0.1.r17 | gln | | 22.1.0.1.r17-gln
| | 22.1.0.1.r11 | gln | | 22.1.0.1.r11-gln
| | 22.0.0.3.r17 | gln | | 22.0.0.3.r17-gln
| | 22.0.0.3.r11 | gln | | 22.0.0.3.r11-gln
GraalVM CE | | 21.0.2 | graalce | | 21.0.2-graalce
| | 21.0.1 | graalce | | 21.0.1-graalce
| | 17.0.9 | graalce | | 17.0.9-graalce
GraalVM Oracle| | 23.ea.3 | graal | | 23.ea.3-graal
| | 21.0.2 | graal | | 21.0.2-graal
| | 21.0.1 | graal | | 21.0.1-graal
这个列表只需要关注:Use|Status|Identifier 这几列即可
- Use 使用状态
- Status 安装状态
- Identifier 安装标识
sdk install java 21.0.1-graalce
命令:sdk install java 后面带的就是:Identifier 安装标识,等待安装完成。
管理本地JDK
在使用SDKman之前,我使用了 brew install openjdk了,我想将已安装的JDK纳入到SDKman统一管理(因为通过sdk install java 安装的JDK,目录不一样)。
查看当前电脑JDK安装的目录,/usr/libexec/java_home -V (mac 自带的命令,mac自己维护)
/usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.291.10 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_271 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
将 1.8.0_271 纳入到SDKman统一管理
sdk install java 1.8.0_271 /Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
提示成功后,我查看sdk Java 的列表
发现已经纳入管理了。
注:sdk install java 会默认将该版本设置为环境版本(默认版本)。
切换JDK版本
sdk use|default java [verison]
请先 后发表评论~