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

Spring Shell命令行应用Shell方法返回null问题排查

问题分析与解决方案

你遇到的问题是Spring Shell 2.1.1中参数绑定规则不匹配,导致命令传入的参数无法正确映射到方法参数上。

错误原因

在Spring Shell 2.x版本中:

  • @ShellOption的value属性用于定义短选项(格式为-x,x为单个字符)
  • 长选项(格式为--xxx)默认与方法参数的变量名一致,或者需要通过longNames属性显式指定

你的代码里,@ShellOption(value = {"name"})错误地将短选项设为-name(不符合短选项单字符的规范),而你使用的--name是长选项,Spring Shell无法将其与参数arg1绑定,因此arg1的值为null。

修复方案

有两种可行的解决方式:

方案1:显式指定长选项

修改@ShellOption配置,通过longNames属性指定长选项为name,同时可按需配置短选项:

@ShellComponent
public class Cli {

    @ShellMethod("Say my name")
    public String hi(@ShellOption(value = {"-n"}, longNames = {"name"}) String arg1){
        return "Hi " + arg1 + "!!";
    }
}

此时运行hi --name Chandler或hi -n Chandler,都能得到正确输出:Hi Chandler!!

方案2:让参数名与长选项名一致

直接将方法参数名改为name,Spring Shell会自动将--name长选项绑定到该参数,无需额外配置:

@ShellComponent
public class Cli {

    @ShellMethod("Say my name")
    public String hi(@ShellOption String name){
        return "Hi " + name + "!!";
    }
}

运行hi --name Chandler即可得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 11:45:37