`
hyw520110
  • 浏览: 221053 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用Apache的CLI来处理命令行

    博客分类:
  • java
阅读更多
CLI是Jakarta Commons中的一个子类。如果你仅仅只有一到两个参数需要处理,那么使用它有点多余,但是,如果你需要从命令行中捕获大多数应用程序的设置参数,那么使用CLI是恰到好处的。

在使用CLI之前需要创建一个Options对象,该对象相当于一个容器,另外还有Option对象,每个Option对象相对于命令行中的一个参数。

   Options opts = new Options();

通过利用这个Options,你可以使用addOption()方法定义你的应用程序可接受的命令行参数,每次都为一个option调用一次这个方法,看下面例示:

   opts.addOption("h", false, "Print help for this application");
   opts.addOption("u", true, "The username to use");
   opts.addOption("dsn", true, "The data source to use");


当然你也可以单独创建Option对线,然后使用addOption()方法添加进去。如下:

Option op = new Option("h", false, "Print help for this application");

一旦你定义了类的参数,创建一个CommandLineParser,并分析已传送到主方法中的组。


   BasicParser parser = new BasicParser();
   CommandLine cl = parser.parse(opts, args);


等到所有的参数都被解析以后,你可以开始检查返回的命令行,这些命令行中,提供用户的参数和值已被语法分析程序详细检查过了。

   if (cl.hasOption('h')) {
      HelpFormatter hf = new HelpFormatter();
      hf.printHelp("OptionsTip", opts);
   } else {
      System.out.println(cl.getOptionValue("u"));
      System.out.println(cl.getOptionValue("dsn"));
   }

就象你看到的那样,你可以使用HelpRormatter类为你的程序自动地产生使用信息。

下面看一下全部的代码:

package com.founder.common;

import org.apache.commons.cli.BasicParser;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

public class OptionsTip {

 public static void main(String[] args) {
  try {
   Options opts = new Options();
   opts.addOption("h", false, "Print help for this application");
   opts.addOption("u", true, "The username to use");
   opts.addOption("dsn", true, "The data source to use");
   BasicParser parser = new BasicParser();
   CommandLine cl = parser.parse(opts, args);
   
   if (cl.hasOption('h')) {
    HelpFormatter hf = new HelpFormatter();
    hf.printHelp("OptionsTip", opts);
   } else {
    System.out.println(cl.getOptionValue("u"));
    System.out.println(cl.getOptionValue("dsn"));
   }
  } catch (ParseException pe) {
   pe.printStackTrace();
  }

 }

}

注:使用此程序时候别忘了把commons-cli-1.0.jar加入到你的classpath中

运行结果:

E:\javaworkspace\collection\src>java com.founder.common.OptionsTip -h
usage: OptionsTip
 -dsn    The data source to use
 -h      Print help for this application
 -u      The username to use

E:\javaworkspace\collection\src>java com.founder.common.OptionsTip -u eric -dsn founder
eric
founder

分享到:
评论

相关推荐

    Apache Common CLI 1.2 源码

    Apache Common CLI 1.2 是一个Java库,主要用于处理命令行接口(CLI)的参数解析。这个库使得在Java程序中处理用户输入的命令行参数变得简单和规范,避免了手动解析字符串的繁琐工作。Apache Common CLI 提供了一种...

    appjava源码下载-DownloadFiles-from-Cli:从命令行界面下载文件的替代开源Java应用程序

    通过阅读和分析源码,开发者可以了解如何利用Java来实现命令行文件下载功能,包括网络请求、文件处理和命令行参数解析等核心逻辑。 【标签】"系统开源" "系统开源"标签表明这个项目是开放源代码的,遵循开源许可证...

    commons-cli

    总的来说,Apache Commons CLI是一个强大的工具,对于那些需要处理命令行输入的Java开发者来说,它可以极大地提高代码的可读性和易用性。通过有效地利用它的功能,可以创建出易于理解和使用的命令行界面。

    cli 1.0

    Apache Commons CLI是这个包的核心组件,它是Apache软件基金会的一个子项目,专门设计用来处理命令行参数和选项。Commons CLI库提供了API,使得开发人员能够轻松创建具有复杂选项和参数的命令行接口。它支持多种格式...

    org.apache.commons

    7. **CLI**: Apache Commons CLI 提供了命令行接口(CLI)解析工具,帮助处理命令行参数和选项。 8. **Configurations**: Apache Commons Configurations 提供了配置文件处理工具,支持 XML、INI、Java 属性等多种...

    commons-cli-1.1.zip

    Apache Commons CLI库是Java开发中的一个实用工具,用于处理命令行接口(CLI)参数和选项。这个库在标题中提到的"commons-cli-1.1.zip"是一个压缩包,包含了Apache Commons CLI项目的1.1版本。这个库是Apache软件...

    Apache Commons书籍

    8. **Apache Commons CLI**:用于处理命令行接口(CLI)的解析,方便创建具有自定义选项和参数的命令行应用程序。 9. **Apache Commons Configuration**:提供了一种灵活的方式来管理和处理配置数据,可以是XML、...

    dry-cli:Ruby的通用命令行界面(CLI)框架

    之后,你可以利用dry-cli提供的DSL(领域特定语言)来定义命令及其选项。例如: ```ruby require 'dry/cli' module MyCLI extend Dry::CLI command :generate do |c| c.option '--name', :string, '指定生成的...

    web-cli-shell.zip_The Web_cli

    总结,Web_CLI_Shell项目是利用Web技术实现的命令行界面,它整合了前端和后端技术,通过Web接口提供命令行功能。项目使用了Eclipse作为开发环境,并采用Maven进行构建和依赖管理。其核心功能可能包括解析用户输入的...

    基于Java语言实现的命令行工具-everything.zip

    1. **参数解析**:使用`java.util.Properties`或第三方库如Apache Commons CLI、picocli等解析命令行参数,使工具能根据用户提供的不同参数执行不同的操作。 2. **文件操作**:通过`java.io.File`类,可以实现文件...

    java编写的命令行文件/文件夹管理程序

    2. **命令行接口(CLI)**:程序通过命令行接收用户输入,解析命令并执行相应的操作。这通常涉及到`java.lang.ProcessBuilder`或`Runtime.exec()`方法来执行操作系统级别的命令,以及`java.util.Scanner`来读取用户...

    PyPI 官网下载 | memfault-cli-0.1.6.tar.gz

    总结来说,“memfault-cli-0.1.6.tar.gz”是一个在Python生态系统中的云原生工具,它可能与Apache ZooKeeper集成,提供了对Memfault平台的命令行访问。这个工具对于那些在分布式环境中使用Python进行物联网设备管理...

    apache-felix-demo

    Apache Felix 是一个基于 Java 的开源框架,它是 OSGi(Open Service Gateway Initiative)...通过这个 demo,开发者可以学习如何利用 Apache Felix 和 OSGi 的优势,构建可扩展、模块化、动态更新的 Java 应用程序。

    apache-karaf-4.0.2.tar.gz

    Apache Karaf是一款轻量级的Java企业服务框架(Service-Oriented Container),它基于OSGi标准,用于构建、部署和管理模块化...通过掌握以上知识,你可以更好地理解和利用Apache Karaf构建、管理和部署模块化Java应用。

    开源项目-mkideal-cli.zip

    1. **模板引擎**:项目可能包含预定义的模板,允许开发者选择不同的模板来初始化一个新的CLI项目,模板可能涵盖了基础的命令处理、参数解析等功能。 2. **参数解析**:mkideal-cli可能会提供一套强大的参数解析机制...

    PyPI 官网下载 | nb-cli-0.6.4.tar.gz

    结合这些信息,我们可以推测nb-cli可能是一个用于云原生环境的Python命令行工具,它可能集成或与Apache Zookeeper进行交互,帮助管理和操作分布式系统。这样的工具可能包括创建、配置、监控Zookeeper节点,或者提供...

    Apache James周清华实战之安装

    - **队列机制(ActiveMQ)**:为了提高性能,James 3.0引入了队列机制,利用ActiveMQ实现邮件的异步处理,从而大大提升了处理大量邮件的能力。 - **配置文件优化**:3.0版本对配置文件进行了重新设计,将原有的大型...

    apache-hive-2.1.1-bin.tar.gz

    总结来说,Apache Hive 是一个面向大数据分析的重要工具,它简化了在 Hadoop 上处理大量数据的过程,使得非程序员也能通过 SQL 式的查询语言对数据进行分析,极大地提升了数据处理的效率和便利性。

    Node.js-iponmap-命令行IP位置查找器

    命令行实用程序,也称为CLI(命令行接口)工具,是那些通过终端或命令提示符与用户交互的应用程序。`iponmap` 属于这一类,用户只需在命令行输入相应的命令和IP地址,即可得到位置信息。这种类型的应用程序通常简洁...

    内置电池的Python3CLI框架_Python_Shell_下载.zip

    Python3 CLI(命令行...同时,通过查看源代码,可以学习到如何利用Python的CLI框架来构建自己的命令行应用。这将是一个很好的学习资源,特别是对于那些想要提升Python编程技能,尤其是涉及到命令行工具开发的开发者。

Global site tag (gtag.js) - Google Analytics