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]
举报
评论 0