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

Spring Boot 2.4.5中ApplicationArguments无法获取命令行参数问题

问题根本原因

你在调用SpringApplication.run()启动Spring容器时,没有将main方法接收的args命令行参数传入框架,Spring Boot自然不会将参数封装到ApplicationArguments对象中,所以ApplicationRunner的run方法拿到的参数集合为空。你main方法里能正常打印参数是因为你直接遍历的是JVM传入的原始参数,和Spring容器管理的参数对象无关。

修复方案

修改main方法中的启动代码,将args作为第二个参数传入SpringApplication.run:

public static void main(String[] args){
    // 新增args参数传入
    SpringApplication.run(MainClass.class, args);
    for (String arg : args) System.out.println("MAIN::::"+arg);
}

修复后效果

重新启动应用并传入相同参数后,ApplicationRunner中就能正常获取到所有参数:

  • 非选项参数iamnonoption会被识别到,args.getNonOptionArgs().size()返回1
  • 选项参数app.name、app.hosts会被正常解析,其中app.name会返回["CmdRulez", "2"]的集合,app.hosts会返回["abc,def,ghi"]的集合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:36:07