SDKMAN管理本地多版本jdk环境


SDKMAN可以管理多版本的开发工具环境,可以参考我的上一篇【SDKMAN——软件开发工具管理器】入门,可能由于oracle的一些原因,发现SDKMAN默认提供的jdk版本没有出现oracle提供的版本了。但是我们可以从oracle官网下载对应的jdk版本,然后利用SDKMAN来管理自己本地安装的jdk版本,从而可以利用SDKMAN方便的切换jdk环境。

首先SDKMAN不能直接安装在Windows上,需要bash环境,我使用的是win10提供的linux子系统来进行演示的,系统版本信息如下:

***@DESKTOP-CNSRI37:~/jdk$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic

一 问题

当我们用命令sdk list java查看可安装的jdk版本时,如下:

================================================================================                 
     19.0.0-grl          11.0.2-zulufx
     13.ea.20-open       10.0.2-zulu
     12.0.1-zulu         10.0.2-open
     12.0.1-librca       9.0.7-zulu
     12.0.1-sapmchn      9.0.4-open
     12.0.1-open         8.0.212-zulu
     12.0.1.j9-adpt      8.0.212-amzn
     12.0.1.hs-adpt      8.0.212.j9-adpt
     11.0.3-sapmchn      8.0.212.hs-adpt
     11.0.3-zulu         8.0.212-librca
     11.0.3-amzn         8.0.202-zulufx
     11.0.3.j9-adpt      7.0.222-zulu
     11.0.3.hs-adpt      6.0.119-zulu
     11.0.3-librca 		 1.0.0-rc-16-grl
     11.0.2-open      	 1.0.0-rc-15-grl
================================================================================

可以发现没有oracle提供的版本,但如果你想用oracle提供的版本又想使用SDKMAN进行管理,依然是可以的。SDKMAN提供了这样的操作方法,接下来就看一下具体的操作吧!

二 操作

1. 从oracle下载jdk

下载地址

我下载的两个版本:jdk-11.0.3_linux-x64_bin.tar.gz, 、jdk-8u211-linux-x64.tar.gz

然后在linux目录解压一下:

sudo tar xvf jdk-8u211-linux-x64.tar.gz , sudo tar xvf jdk-11.0.3_linux-x64_bin.tar.gz

解压后:

***@DESKTOP-CNSRI37:/usr/local/jdk$ ls
jdk-11.0.3  jdk1.8.0_211

2. SDKMAN关联本地安装的jdk

执行命令 sdk install java java8 /usr/local/jdk/jdk1.8.0_211

执行命令sdk list java,查看:

================================================================================
Available Java Versions
================================================================================
   + java8               11.0.2-open         1.0.0-rc-15-grl
     19.0.0-grl          11.0.2-zulufx     + java11
     13.ea.20-open       10.0.2-zulu
     12.0.1-zulu         10.0.2-open
     12.0.1-librca       9.0.7-zulu
     12.0.1-sapmchn      9.0.4-open
     12.0.1-open         8.0.212-zulu
     12.0.1.j9-adpt      8.0.212-amzn
     12.0.1.hs-adpt      8.0.212.j9-adpt
     11.0.3-sapmchn      8.0.212.hs-adpt
     11.0.3-zulu         8.0.212-librca
     11.0.3-amzn         8.0.202-zulufx
     11.0.3.j9-adpt      7.0.222-zulu
     11.0.3.hs-adpt      6.0.119-zulu
     11.0.3-librca       1.0.0-rc-16-grl

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================

可以发现多了java8

执行命令sdk use java java8,然后选择使用的版本

执行命令java -version,效果:

***@DESKTOP-CNSRI37:/usr/local/jdk$ java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

如果没有生效,则执行一下source ~/.bashrc ,使配置生效(更新环境变量);

同样的操作关联本地的jdk-11.0.3版本。

3. 切换jdk版本

***@DESKTOP-CNSRI37:/usr/local/jdk$ sdk use java java11

Using java version java11 in this shell.
***@DESKTOP-CNSRI37:/usr/local/jdk$ java -version
java version "11.0.3" 2019-04-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.3+12-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.3+12-LTS, mixed mode)
***@DESKTOP-CNSRI37:/usr/local/jdk$
***@DESKTOP-CNSRI37:/usr/local/jdk$
***@DESKTOP-CNSRI37:/usr/local/jdk$ sdk use java java8

Using java version java8 in this shell.
***@DESKTOP-CNSRI37:/usr/local/jdk$ java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

三 总结

通过上面操作,就可以很方便的切换我们的jdk环境了,除了jdk,其他的一些工具也可以进行类似的操作,如maven,gradle等。


文章作者: shiv
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shiv !
评论
  目录