当我们在运行java程序的时候,常常需要从外界输入参数“到”程序,这里以运行jar包为例,总结两种传参数到程序的方式。
一、将参数依次直接放在命令行后面
常见格式为:
java (虚拟机参数,如:-Xmx10240m -Xss12800k) -jar jar包名 参数1 参数2。。。
各个参数间用空格隔开;
在程序里,依次取出来:
String parameter1="";
String parameter2="";
if(args.length != 2) {
System.out.println("---Please Input Right Parameter!---");
System.exit(0);
}
else {
parameter1=args[0];
parameter2=args[1];
}
这种方式是最常见的,然而这样传参需要外界知道参数的位置顺序,看得不直观,第二种方式会直观点;
二、将参数放在命令行后面
String port="9999";
String saveFileName = "repsonTime";
String nodeName = "北京";
String interval="12";
// Create a Parser
CommandLineParser parser = new BasicParser( );
Options options = new Options( );
options.addOption("p", "portname", true, "input port to listen");
options.addOption("g", "logname", true, "log output to" );
options.addOption("n", "nodename", true, "input nodeName");
options.addOption("t", "send mail interval", true, "send mail interval");
options.addOption("h", "helpInfo", false, "parameter information");
CommandLine commandLine = parser.parse( options, argv );
if( commandLine.hasOption('h') ) {
System.out.println("-p: \t listen port\n"+
"-g: \t log name\n"+
"-n: \t node name\n" +
"-t: \t send mail interval\n");
}
if( commandLine.hasOption('p') ) {
port=commandLine.getOptionValue('p');
}
if( commandLine.hasOption('g') ) {
saveFileName=commandLine.getOptionValue('g');
}
if( commandLine.hasOption('n') ) {
nodeName=commandLine.getOptionValue('n');
}
if( commandLine.hasOption('t') ) {
interval=commandLine.getOptionValue('t');
}
System.out.println("监听端口:"+port+"\t"+
"日志名:"+saveFileName+"\t"+
"节点名:"+nodeName+"\t"+
"发送邮件时间间隔:"+interval);
这种方式会好点,如果不清楚每个参数选项的含义,先输入-h查看即可。
但需要引入外界的jar包——commons-cli-1.2.jar,我的资源里可以下载“java解析命令行参数的jar包”!!