在 Java 中编写命令行界面(CLI,Command Line Interface),通常有几种层次的做法,从“最原始”到“专业框架”都可以。下面按由浅入深给你讲清楚。
Scanner 读取输入适合:学习、小工具、练习
import java.util.Scanner;
public class HelloCli {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入你的名字:");
String name = scanner.nextLine();
System.out.println("你好," + name + "!");
scanner.close();
}
}
运行:
javac HelloCli.java
java HelloCli
✅ 优点:简单
❌ 缺点:参数解析弱、不支持 -h --help 等
args 接收命令行参数适合:脚本型工具
public class ArgsDemo {
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("参数" + i + " = " + args[i]);
}
}
}
运行:
java ArgsDemo -name tom -age 18
❌ 问题:需要自己解析 -name、--age
适合:正规 CLI 工具
<dependency>
<groupId>commons-cli</groupId>
<artifactId>commons-cli</artifactId>
<version>1.5.0</version>
</dependency>
import org.apache.commons.cli.*;
public class CliDemo {
public static void main(String[] args) throws ParseException {
Options options = new Options();
options.addOption("n", "name", true, "你的名字");
options.addOption("h", "help", false, "显示帮助");
CommandLineParser parser = new DefaultParser();
CommandLine cmd = parser.parse(options, args);
if (cmd.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("mycli", options);
return;
}
String name = cmd.getOptionValue("n", "匿名");
System.out.println("你好," + name);
}
}
运行:
java -jar mycli.jar -n Tom
java -jar mycli.jar -h
✅ 支持:
-n Tom--name Tom-h / --help适合:专业 CLI、Spring Boot、微服务工具
--help<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.7.5</version>
</dependency>
import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Option;
@Command(name = "greet", mixinStandardHelpOptions = true)
public class Greet implements Runnable {
@Option(names = {"-n", "--name"}, description = "名字")
String name = "世界";
public void run() {
System.out.println("你好," + name);
}
public static void main(String[] args) {
new CommandLine(new Greet()).execute(args);
}
}
运行:
java Greet -n Tom
java Greet --help
✅ 非常像 Git / Docker 的命令行
适合:聊天式工具
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("> ");
String line = sc.nextLine();
if ("exit".equals(line)) break;
System.out.println("你输入了:" + line);
}
| 场景 | 推荐 |
|---|---|
| 学习 Java | Scanner |
| 简单脚本 | args |
| 正式 CLI 工具 | Apache Commons CLI |
| 专业 / 复杂 | Picocli |
| Spring Boot | Picocli + Spring |
如果你愿意,我可以:
你打算用 CLI 做什么?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。