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等。