Apache Commons CLI 是最常用的轻量级命令行参数解析库,支持 POSIX/GNU/短选项混合风格,核心为 Options 和 DefaultParser,适合工具类应用。

Java 自带的 main(String[] args) 只提供原始字符串数组,手动解析命令行参数容易出错、重复造轮子。成熟的第三方库能帮你自动处理选项定义、值绑定、帮助信息生成和错误提示。
Apache Commons CLI 是最常用的轻量级选择
它不依赖其他库,API 简洁,支持 POSIX、GNU 和短选项混合风格(如 -h、--help、-Dkey=value)。适合大多数工具类应用,比如构建脚本、数据导入导出程序或运维小工具。
- 核心是
Options(定义所有可接受的参数)和DefaultParser(解析实际输入) - 每个
Option可设置是否必填、是否带参数、参数类型(String/Number/Boolean)、描述文本 - 解析后得到
CommandLine对象,用hasOption()和getOptionValue()安全取值
常用功能写法示例
比如定义一个带配置文件路径和调试开关的命令:
Options options = new Options();
options.addOption("c", "config", true, "配置文件路径(必填)");
options.addOption("d", "debug", false, "启用调试模式");
options.addOption("h", "help", false, "显示帮助");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("h")) {
new HelpFormatter().printHelp("myapp", options);
return;
}
String configPath = cmd.getOptionValue("c"); // 安全获取,未提供时返回 null
boolean debug = cmd.hasOption("d");
替代方案简要对比
如果项目已用 Spring Boot,Spring Boot CLI 或 Spring Shell 更自然;需要强类型绑定和注解驱动,picocli 是现代首选——它支持自动生成帮助、子命令、Shell 补全,且性能更好、文档更友好。Commons CLI 胜在简单稳定,适合快速集成或遗留系统维护。
不复杂但容易忽略:记得校验必填项、处理 ParseException 并输出友好的错误提示,别让使用者只看到堆栈。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











