You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置SDKMAN自动使用特定发行版Java主版本的最新补丁?

问题:如何让SDKMAN自动使用特定发行版Java主版本的最新补丁?

我用SDKMAN管理本地Java环境,执行sdk list java能看到所有补丁版本,比如Amazon Corretto的21版(标识21-amzn)和21.0.1版(标识21.0.1-amzn)。我想让SDKMAN自动用Corretto Java 21的最新补丁版本,后续也能自动更新到新的补丁。

但执行sdk upgrade java时,系统提示java is up-to-date,可明明sdk list java里有21.0.1这个更新的补丁版本,看来SDKMAN把21和21.0.1当成了完全独立的版本。

核心问题:能不能配置SDKMAN,让它始终使用特定发行版Java主版本的最新稳定版?

================================================================================
Available Java Versions for macOS ARM 64bit
================================================================================
 Vendor        | Use | Version      | Dist    | Status     | Identifier
--------------------------------------------------------------------------------
 Corretto      |     | 21           | amzn    | installed  | 21-amzn             
               |     | 21.0.1       | amzn    |            | 21.0.1-amzn         
               |     | 20.0.2       | amzn    |            | 20.0.2-amzn         
               |     | 20.0.1       | amzn    |            | 20.0.1-amzn         
               |     | 17.0.9       | amzn    |            | 17.0.9-amzn         
               |     | 17.0.8       | amzn    |            | 17.0.8-amzn         
               |     | 17.0.7       | amzn    |            | 17.0.7-amzn         
               |     | 11.0.21      | amzn    |            | 11.0.21-amzn        
               |     | 11.0.20      | amzn    |            | 11.0.20-amzn        
               |     | 11.0.19      | amzn    |            | 11.0.19-amzn        
               |     | 8.0.392      | amzn    |            | 8.0.392-amzn        
               |     | 8.0.382      | amzn    |            | 8.0.382-amzn        
               |     | 8.0.372      | amzn    |            | 8.0.372-amzn  
解决方案

SDKMAN本身没有内置配置直接实现这个需求,但有两种方法能达成目标:

1. 用通配符指定版本安装并设为默认

安装Corretto Java 21的最新补丁版时,用主版本号加通配符的写法:

sdk install java 21.*-amzn

这条命令会自动定位并安装Corretto 21系列里的最新补丁版本。安装完成后,执行下面的命令设为全局默认:

sdk default java 21.*-amzn

之后每次运行sdk upgrade java,SDKMAN就会自动检测21系列的新补丁并完成更新。

2. 写个脚本自动检查切换

如果想更省心,可以写个简单的shell脚本,自动检查并切换到最新的Corretto 21版本:

#!/bin/bash
# 抓取Corretto 21系列的最新版本标识
LATEST_CORRETTO_21=$(sdk list java | grep -E '21\.[0-9]+-amzn' | awk '{print $NF}' | sort -V | tail -n 1)

# 对比当前默认版本,不一样就切换
CURRENT_DEFAULT=$(sdk current java | awk '{print $NF}')
if [ "$CURRENT_DEFAULT" != "$LATEST_CORRETTO_21" ]; then
    sdk install java "$LATEST_CORRETTO_21"
    sdk default java "$LATEST_CORRETTO_21"
    echo "已切换到Corretto 21最新版本: $LATEST_CORRETTO_21"
else
    echo "当前已是Corretto 21最新版本"
fi

把脚本存成update-corretto-21.sh,给它加执行权限:

chmod +x update-corretto-21.sh

可以手动运行,或者通过系统的定时任务(比如macOS的launchd、Linux的cron)定期自动执行。


内容的提问来源于stack exchange,提问作者ams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:55:40