java编写基于命令行形式_使用Java编写基于命令行的程序

本文介绍了如何使用Java编写基于命令行的程序,包括处理命令行参数的简单方法和复杂示例,以及如何利用Apache Common Cli库简化参数解析,提供帮助文档功能。通过一个完整的例子展示了如何改造代码来利用Apache Common Cli。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平时工作中,会用Java编写基于命令行的小工具。本片将介绍如何使用Java编写基于命令行的程序。

命令行程序需要包含的内容

命令行参数解析

程序以及参数说明

程序功能的实现(这个根据自己情况而定)

Java中如何处理命令行参数

最直接的处理命令行的方法:

public class Cli {

public static void main (String [] args)

{

for(String arg : args ) {

System.out.println(arg);

}

}

}

运行:

m-lv:cli lvjian$ javac Cli.java

m-lv:cli lvjian$ java Cli

m-lv:cli lvjian$ java Cli -file filename

-file

filename

复杂一点的命令处理

下面这段代码摘自我的Java2ObjC Tools工具:

Ant中的运行脚本

程序代码段

public static void main(String[] args) throws ClassNotFoundException {

ClassPathXmlApplicationContext ctx =

new ClassPathXmlApplicationContext("/tools/spring/restkit.xml");

RKTools tools = (RKTools)ctx.getBean("rktools");

if(args[0].equals("-o")) {

String output = args[1];

log.info("output path:" + output);

tools.setTargetSrc(output);

}

if(args[2].equals("-v")) {

String version = args[3];

log.info("version:" + version);

tools.setVersion(version);

}

if(args[4].equals("-excludes")) {

String excludes = args[5];

if(excludes != null) {

String[] arr = excludes.split(",");

tools.setExcludes(arr);

}

}

tools.generate();

}

如果每个参数都这么解析,那太痛苦了。况且这里用了大量代码只做了解析工作,并且还没有做提供命令行参数说明文档。一般使用 Apache Common Cli 包解决。

一个完成的例子

使用Apache Common Cli 改造之前的 Cli 代码

(代码可以在附件找到)

import org.apache.commons.cli.*;

public class Cli {

static Options opts = new Options();

static {

// 配置两个参数

// -h --help 帮助文档

// -f --file file参数

opts.addOption("h", "help", false, "The command help");

opts.addOption("f", "file", false,

"Input your file name.");

}

/**

* 提供程序的帮助文档

*/

static void printHelp(Options opts) {

HelpFormatter hf = new HelpFormatter();

hf.printHelp("The Cli app. Show how to use Apache common cli.", opts);

}

public static void main (String [] args) throws ParseException {

// 解析参数

CommandLineParser parser = new PosixParser();

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

if(cl.hasOption("h")) {

printHelp(opts);

return;

}

String filename = cl.getOptionValue("file");

System.out.println(filename);

}

}

运行

m-lv:cli lvjian$ java -jar cli.jar -h

usage: The Cli app. Show how to use Apache common cli.

-f,--file Input your file name.

-h,--help The command help

m-lv:cli lvjian$ java -jar cli.jar -f fileparameter

fileparameter

m-lv:cli lvjian$ java -jar cli.jar -file fileparameter

fileparameter

附件代码说明

使用Apache Ant编译

ant默认指令为: ant jar

真实的使用案例:

mas-message

https://github.com/lvjian700/mas-message

提供给C++客户端使用,调用北京电视的内部短信接口。

可供学习的内容:

Apache Common Cli 包的使用

C 通过命令行调用 Jar包

Java中使用System.exit()方法传递退出值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值