SDKMAN因为网络问题用不了怎么办?

SDKMAN是Linux环境下一款SDK多版本管理工具,可以帮助我们管理SDK多个版本。在使用的过程中,经常会出现因为网络问题导致无法安装某些SDK或者某些SDK的特定版本的问题,这里简要介绍一下解决办法。

SDKMAN目录结构

lwk@qwfys:~/.sdkman$ tree -d -L 3
.
├── archives
├── bin
├── candidates
│   ├── java
│   │   ├── 11.0.12-open
│   │   ├── 11.0.15-librca
│   │   ├── 17.0.3-librca
│   │   ├── 18.0.1.1-open
│   │   ├── 22.0.0.2.r11-grl
│   │   ├── 22.1.0.r17-grl
│   │   ├── 8.0.302-open
│   │   ├── 8.0.333-librca
│   │   └── current -> 8.0.333-librca
│   └── maven
│       ├── 3.8.5
│       ├── 3.8.6
│       └── current -> 3.8.6
├── contrib
│   └── completion
│       └── bash
├── etc
├── ext
├── src
├── tmp
│   └── out
└── var
    └── metadata

27 directories
lwk@qwfys:~/.sdkman$

Java SDK版本

lwk@qwfys$ sdk list java
================================================================================
Available Java Versions for Linux 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 18.0.1       | amzn    |            | 18.0.1-amzn         
               |     | 17.0.3.6.1   | amzn    |            | 17.0.3.6.1-amzn     
               |     | 17.0.0.35.1  | amzn    |            | 17.0.0.35.1-amzn    
               |     | 11.0.15.9.1  | amzn    |            | 11.0.15.9.1-amzn    
               |     | 11.0.12.7.1  | amzn    |            | 11.0.12.7.1-amzn    
               |     | 8.332.08.1   | amzn    |            | 8.332.08.1-amzn     
 Dragonwell    |     | 11.0.12.8    | albba   |            | 11.0.12.8-albba     
               |     | 8.8.9        | albba   |            | 8.8.9-albba         
 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    
 GraalVM       |     | 22.1.0.r17   | grl     | installed  | 22.1.0.r17-grl      
               |     | 22.1.0.r11   | grl     |            | 22.1.0.r11-grl      
               |     | 22.0.0.2.r17 | grl     |            | 22.0.0.2.r17-grl    
               |     | 22.0.0.2.r11 | grl     | installed  | 22.0.0.2.r11-grl    
               |     | 21.3.2.r17   | grl     |            | 21.3.2.r17-grl      
               |     | 21.3.2.r11   | grl     |            | 21.3.2.r11-grl      
               |     | 21.3.1.r8    | grl     |            | 21.3.1.r8-grl       
               |     | 21.2.0.r8    | grl     |            | 21.2.0.r8-grl       
               |     | 21.1.0.r8    | grl     |            | 21.1.0.r8-grl       
               |     | 20.3.6.r11   | grl     |            | 20.3.6.r11-grl      
               |     | 20.3.3.r8    | grl     |            | 20.3.3.r8-grl       
               |     | 20.3.2.r8    | grl     |            | 20.3.2.r8-grl       
               |     | 19.3.6.r11   | grl     |            | 19.3.6.r11-grl      
               |     | 19.3.6.r8    | grl     |            | 19.3.6.r8-grl       
 Java.net      |     | 20.ea.2      | open    |            | 20.ea.2-open        
               |     | 20.ea.1      | open    |            | 20.ea.1-open        
               |     | 19.ea.27     | open    |            | 19.ea.27-open       
               |     | 19.ea.26     | open    |            | 19.ea.26-open       
               |     | 19.ea.25     | open    |            | 19.ea.25-open       
               |     | 19.ea.1.pma  | open    |            | 19.ea.1.pma-open    
               |     | 18.0.1.1     | open    | installed  | 18.0.1.1-open       
               |     | 11.0.12      | open    | installed  | 11.0.12-open        
               |     | 11.0.11      | open    |            | 11.0.11-open        
               |     | 11.0.10      | open    |            | 11.0.10-open        
               |     | 11.0.2       | open    |            | 11.0.2-open         
               |     | 8.0.302      | open    | installed  | 8.0.302-open        
               |     | 8.0.292      | open    |            | 8.0.292-open        
               |     | 8.0.282      | open    |            | 8.0.282-open        
               |     | 8.0.265      | open    |            | 8.0.265-open        
 Liberica      |     | 18.0.1.1.fx  | librca  |            | 18.0.1.1.fx-librca  
               |     | 18.0.1.1     | librca  |            | 18.0.1.1-librca     
               |     | 17.0.3.1.fx  | librca  |            | 17.0.3.1.fx-librca  
               |     | 17.0.3.1     | librca  |            | 17.0.3.1-librca     
               |     | 17.0.3       | librca  | local only | 17.0.3-librca       
               |     | 11.0.15.fx   | librca  |            | 11.0.15.fx-librca   
               |     | 11.0.15.1.fx | librca  |            | 11.0.15.1.fx-librca 
               |     | 11.0.15.1    | librca  |            | 11.0.15.1-librca    
               |     | 11.0.15      | librca  | local only | 11.0.15-librca      
               |     | 8.0.333.fx   | librca  |            | 8.0.333.fx-librca   
               | >>> | 8.0.333      | librca  | installed  | 8.0.333-librca      
               |     | 8.0.332.fx   | librca  |            | 8.0.332.fx-librca   
 Liberica NIK  |     | 22.1.r17     | nik     |            | 22.1.r17-nik
               |     | 22.1.r11     | nik     |            | 22.1.r11-nik        
               |     | 22.0.0.2.r17 | nik     |            | 22.0.0.2.r17-nik    
               |     | 22.0.0.2.r11 | nik     |            | 22.0.0.2.r11-nik    
               |     | 21.3.2.r17   | nik     |            | 21.3.2.r17-nik      
               |     | 21.3.2.r11   | nik     |            | 21.3.2.r11-nik      
               |     | 21.2         | nik     |            | 21.2-nik            
               |     | 21.1         | nik     |            | 21.1-nik            
               |     | 21.0.0.2.r11 | nik     |            | 21.0.0.2.r11-nik    
               |     | 21.0.0.2     | nik     |            | 21.0.0.2-nik        
 Mandrel       |     | 22.1.0.0.r17 | mandrel |            | 22.1.0.0.r17-mandrel
               |     | 22.1.0.0.r11 | mandrel |            | 22.1.0.0.r11-mandrel
               |     | 22.0.0.2.r17 | mandrel |            | 22.0.0.2.r17-mandrel
               |     | 22.0.0.2.r11 | mandrel |            | 22.0.0.2.r11-mandrel
               |     | 21.3.2.0.r17 | mandrel |            | 21.3.2.0.r17-mandrel
               |     | 21.3.2.0.r11 | mandrel |            | 21.3.2.0.r11-mandrel
               |     | 21.3.1.1.r17 | mandrel |            | 21.3.1.1.r17-mandrel
               |     | 21.3.1.1.r11 | mandrel |            | 21.3.1.1.r11-mandrel
               |     | 21.3.1.0.r17 | mandrel |            | 21.3.1.0.r17-mandrel
               |     | 21.3.1.0.r11 | mandrel |            | 21.3.1.0.r11-mandrel
               |     | 21.3.0.0     | mandrel |            | 21.3.0.0-mandrel    
               |     | 21.2.0.2     | mandrel |            | 21.2.0.2-mandrel    
               |     | 20.3.3.0     | mandrel |            | 20.3.3.0-mandrel    
 Microsoft     |     | 17.0.3       | ms      |            | 17.0.3-ms           
               |     | 11.0.15      | ms      |            | 11.0.15-ms          
 Oracle        |     | 18.0.1       | oracle  |            | 18.0.1-oracle       
               |     | 17.0.3       | oracle  |            | 17.0.3-oracle       
 SapMachine    |     | 18.0.1.1     | sapmchn |            | 18.0.1.1-sapmchn    
               |     | 17.0.3       | sapmchn |            | 17.0.3-sapmchn      
               |     | 17.0.3.0.1   | sapmchn |            | 17.0.3.0.1-sapmchn  
               |     | 17.0.2       | sapmchn |            | 17.0.2-sapmchn      
               |     | 11.0.15      | sapmchn |            | 11.0.15-sapmchn     
               |     | 11.0.15.0.1  | sapmchn |            | 11.0.15.0.1-sapmchn 
               |     | 11.0.14      | sapmchn |            | 11.0.14-sapmchn     
               |     | 11.0.14.1    | sapmchn |            | 11.0.14.1-sapmchn   
 Semeru        |     | 18.0.1.1     | sem     |            | 18.0.1.1-sem        
               |     | 17.0.3       | sem     |            | 17.0.3-sem          
               |     | 11.0.15      | sem     |            | 11.0.15-sem         
               |     | 8.0.332      | sem     |            | 8.0.332-sem         
 Temurin       |     | 18.0.1       | tem     |            | 18.0.1-tem          
               |     | 17.0.3       | tem     |            | 17.0.3-tem          
               |     | 11.0.15      | tem     |            | 11.0.15-tem         
               |     | 8.0.332      | tem     |            | 8.0.332-tem         
 Trava         |     | 11.0.9       | trava   |            | 11.0.9-trava        
               |     | 8.0.232      | trava   |            | 8.0.232-trava       
 Zulu          |     | 18.0.1       | zulu    |            | 18.0.1-zulu         
               |     | 18.0.1.fx    | zulu    |            | 18.0.1.fx-zulu      
               |     | 17.0.3       | zulu    |            | 17.0.3-zulu         
               |     | 17.0.3.fx    | zulu    |            | 17.0.3.fx-zulu      
               |     | 11.0.15      | zulu    |            | 11.0.15-zulu        
               |     | 11.0.15.fx   | zulu    |            | 11.0.15.fx-zulu     
               |     | 8.0.332      | zulu    |            | 8.0.332-zulu        
               |     | 8.0.332.fx   | zulu    |            | 8.0.332.fx-zulu     
               |     | 7.0.342      | zulu    |            | 7.0.342-zulu        
               |     | 6.0.119      | zulu    |            | 6.0.119-zulu
================================================================================
Omit Identifier to install default version 17.0.3-tem:
    $ sdk install java
Use TAB completion to discover available versions
    $ sdk install java [TAB]
Or install a specific version by Identifier:
    $ sdk install java 17.0.3-tem
Hit Q to exit this list view
================================================================================
(END)
q
lwk@qwfys:~$ 

Maven版本

lwk@qwfys:~$ sdk list maven
================================================================================
Available Maven Versions
================================================================================
 > * 3.8.6               3.3.3                                                  
   * 3.8.5               3.3.1                                                  
     3.8.4               3.2.5                                                  
     3.8.3               3.2.3                                                  
     3.8.2               3.2.2                                                  
     3.8.1               3.2.1                                                  
     3.6.3               3.1.1                                                  
     3.6.2               3.1.0                                                  
     3.6.1               3.0.5                                                  
     3.6.0               3.0.4                                                  
     3.5.4                                                                      
     3.5.3                                                                      
     3.5.2                                                                      
     3.5.0                                                                      
     3.3.9                                                                      

================================================================================
+ - local version
* - installed
> - currently in use
================================================================================
(END)
q
lwk@qwfys:~$

看到这里,我们发现了一个技巧,那就是目录{SDKMAN_HOME}/candidates中的文件结构是{SDK}/{VERSION}这样的形式,如果目标下面有多个版本,软链接current指向我们期望设置的当前版本。

比说,maven当前版本是3.8.6,那么目录{SDKMAN_HOME}/candidates/maven中的current就指向3.8.6这个目录,即:

lwk@qwfys:~/.sdkman/candidates/maven$ ll
total 16
drwxrwxr-x 4 lwk lwk 4096 Jun 24 10:56 ./
drwxrwxr-x 4 lwk lwk 4096 Jun  6 15:12 ../
drwxr-xr-x 6 lwk lwk 4096 Mar  5 11:30 3.8.5/
drwxr-xr-x 6 lwk lwk 4096 Jun  6 16:16 3.8.6/
lrwxrwxrwx 1 lwk lwk    5 Jun 24 10:56 current -> 3.8.6/
lwk@qwfys:~/.sdkman/candidates/maven$ 

同样的,Java当前版本是Liberica提供的JDK 8.0.33,代号8.0.333-librca,即

Liberica             | >>> | 8.0.333      | librca  | installed  | 8.0.333-librca 

那么目录{SDKMAN_HOME}/candidates/java中的current就指向8.0.333-librca这个目录,即:

lwk@qwfys:~/.sdkman/candidates/java$ ll
total 40
drwxrwxr-x 10 lwk lwk 4096 Jun 24 09:16 ./
drwxrwxr-x  4 lwk lwk 4096 Jun  6 15:12 ../
drwxrwxr-x 10 lwk lwk 4096 Jul 15  2021 11.0.12-open/
drwxrwxr-x  9 lwk lwk 4096 Apr 20 12:53 11.0.15-librca/
drwxrwxr-x  9 lwk lwk 4096 Apr 19 14:03 17.0.3-librca/
drwxrwxr-x  8 lwk lwk 4096 Jun  6 16:42 18.0.1.1-open/
drwxrwxr-x 10 lwk lwk 4096 Jun  8 17:46 22.0.0.2.r11-grl/
drwxrwxr-x 10 lwk lwk 4096 Jun  6 17:10 22.1.0.r17-grl/
drwxrwxr-x  9 lwk lwk 4096 Jul 16  2021 8.0.302-open/
drwx------  9 lwk lwk 4096 May 31 18:43 8.0.333-librca/
lrwxrwxrwx  1 lwk lwk   14 Jun 24 09:16 current -> 8.0.333-librca/
lwk@qwfys:~/.sdkman/candidates/java$ 

如此以来,我们只要通过其他手段将目标SDK对应版本按照上述规律放到目录{SDKMAN_HOME}/candidates/{SDK}/{VERSION}中,并在目录{SDKMAN_HOME}/candidates中的文件结构是{SDK}中创建软链接,指向期待的版本即可。这种方式与直接使用命令
sdk {sdk} default {VERSION}的效果是一样的。

举例说明,我现在想将Java SDK版本设置为8.0.332-zulu,用命令是

sdk java default 8.0.332-zulu

相当于在目录{SDKMAN_HOME}/candidates/java中,用软链接current指向了目录8.0.332-zulu,而8.0.332-zulu中则是zulu为我们提供的JDK的8.0.332版本。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qwfys200

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值