java 解析控制台命令,启动参数解析,cmd,console,commons-cli的使用

java -jar 启动jar包时,需要在jar包后面指定 参数,如--pidfile=test.pid  等

java 的main方法参数 String [] args  中的args就是参数,但是自己解析起来比较困难。

commons-cli  已经帮助我们实现了常见的功能。

Maven  依赖如下

 <!-- https://mvnrepository.com/artifact/commons-cli/commons-cli -->
    <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>1.6.0</version>
    </dependency>

package test;

import java.util.HashMap;
import java.util.Map;

import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;

public class OptionTest {

	public static void main(String[] args) {
		Map<String,String> cmdLineParm = getCmdLineParm(args);
		if(cmdLineParm.containsKey("option")) {
			System.err.println("option="+cmdLineParm.get("option"));
		}
		
	}
	public static Map<String,String> getCmdLineParm(String[] args){
		Map<String,String> parmMap = new HashMap<String, String>();
		Options options = new Options();
//添加需要解析的参数  java -jar test.jar  -o=optionparm   true是-o后面带有参数 false后面没有 如 -h  代表help
		options.addOption("o", "option", true, "options parm");
		options.addOption("h", "help", false, "print help");
		CommandLineParser parser = new DefaultParser();
		HelpFormatter formatter = new HelpFormatter();
		CommandLine cmd =  null;
		try {
			cmd = parser.parse(options, args);
		} catch (ParseException e) {
			e.printStackTrace();
			formatter.printHelp("Main", options);
			System.exit(1);
		}
		if(cmd.hasOption("help")) {
			formatter.printHelp("Main", options);
			System.exit(1);
		}
		if(cmd.hasOption("option")) {
			String optionValue = cmd.getOptionValue("option");
			parmMap.put("option", optionValue);
		}else {
			System.err.println("NO Option value");
		}
		return parmMap;
	}
}

 运行jar包时后面跟上参数  -o "your parm"  就能解析出option 参数

formatter.printHelp("Main", options); 可以打印出来该jar包如何使用,后面显示需要什么参数及说明

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值