温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用java写命令行界面

发布时间:2026-10-05 03:14:31 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 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


三、使用 Apache Commons CLI(推荐)

适合:正规 CLI 工具

1. 添加依赖(Maven)

<dependency>
  <groupId>commons-cli</groupId>
  <artifactId>commons-cli</artifactId>
  <version>1.5.0</version>
</dependency>

2. 示例代码

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

四、现代方案:Picocli(强烈推荐)

适合:专业 CLI、Spring Boot、微服务工具

特点

  • 注解驱动
  • 自动生成 --help
  • 支持子命令
  • 像 Git 一样

Maven 依赖

<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 的命令行


五、交互式命令行(REPL)

适合:聊天式工具

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 项目结构
  • ✅ 写一个类似 git 的子命令 CLI
  • ✅ 结合 Spring Boot 写命令行程序

你打算用 CLI 做什么?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手