java @option之args4j
args4j简介
args4j是一个用来配置命令行的工具。
在实际的项目中用到命令行的并不是很常见,但当真正使用到时,特别是在程序启动时配置一下参数的时候就很有用了,如果参数很多的话,一个一个解析命令行还是比较麻烦的.这时使用Args4J就相当好办了. 在本文中我们来看看Args4J的使用,当需要时能提供一个解决方案.
Args4J使用一个被称为Option类的类来保存输入的参数,让后根据该类来应用参数,每个参数可以对应一个类中的属性,该属性用Annotation注释,在Annotation中给出该参数 的选项, 还可以配置其他有用的信息
例如,在做开源工具时,写好一个项目,需要上传到Linux等平台时,往往就需要通过命令输入程序的参数。如下,是我在cmd里面做测试用的。
从上面可以看到,输入的参数有两个,一个是inputfdir,一个是outfdir。
使用样例
程序目录结构如下
package main;
import org.kohsuke.args4j.Option;
public class SampleCmdOption {
@Option(name="-est", usage="Specify whether we want to estimate model from scratch")
public boolean est = false;
@Option(name="-estc", usage="Specify whether we want to continue the last estimation")
public boolean estc = false;
@Option(name="-inf", usage="Specify whether we want to do inference")
public boolean inf = true;
}
package main;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
public class TestMain {
public static void main(String[] args) {
//开始解析命令参数
SampleCmdOption option = new SampleCmdOption();
CmdLineParser parser = new CmdLineParser(option);
try {
if (args.length == 0){
showHelp(parser);
return;
}
parser.parseArgument(args);
//开始初步参数校验并调用程序开始运行,这里就会获得参数
System.out.println(option.est);
System.out.println(option.name);
//下面再写你自己的主程序都是可以的。。。。。
}catch (CmdLineException cle){
System.out.println("Command line error: " + cle.getMessage());
showHelp(parser);
return;
}catch (Exception e){
System.out.println("Error in main: " + e.getMessage());
e.printStackTrace();
return;
}
}
public static void showHelp(CmdLineParser parser){
System.out.println("LDA [options ...] [arguments...]");
parser.printUsage(System.out);
}
}
java @option之args4j的更多相关文章
- Android source code compile error: “Try increasing heap size with java option '-Xmx<size>'”
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" ./pr ...
- Java 命令行运行参数大全
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME"bin"java –option 来启动,-option为虚拟 ...
- Java命令参数说明大全
Java 在运行已编译完成的类时,是通过 java 虚拟机来装载和执行的,java 虚拟机通过操作系统命令 JAVA_HOME\bin\java –option 来启动,-option 为虚拟机参数, ...
- Java命令行运行参数说明大全--转
来源:http://xinklabi.iteye.com/blog/837435 Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME\ ...
- 定制化Azure站点Java运行环境(5)
Java 8下PermGen及参数设置 在上一章节中,我们定制化使用了Java 8环境,使用我们的测试页面打印出了JVM基本参数,但如果我们自己观察,会发现在MXBeans中,没有出现PermGen的 ...
- Java命令参数说明
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令 JAVA_HOME"bin"java –option 来启动,-option为虚 ...
- DAY6-小变化(java提示框)-2018-1-16
终于有一点点小变化了,今天学习了java里的对话框,有四种类型:1.确认对话框(showConfirmDialog) 2.可选择输入的对话框(showInputDialog) 3.信息对话框(show ...
- ubuntu命令行下java工程编辑与算法(第四版)环境配置
ubuntu命令行下java工程编辑与算法(第四版)环境配置 java 命令行 javac java 在学习算法(第四版)中的实例时,因需要安装配套的java编译环境,可是在编译java文件的时候总是 ...
- Java 命令行运行参数
Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME"bin"java –option 来启动,-option为虚拟 ...
随机推荐
- Haskell语言学习笔记(53)Data.Sequence
Data.Sequence Prelude> import Data.Sequence as Seq Prelude Seq> :set -XOverloadedLists Prelude ...
- JAVA中的异常疑点解析
1 final, finally, finalize的区别. final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. 内部类要访问局部变量,局部变量必须定义成final类型 ...
- 在hadoop运行tensor flow
http://www.infoq.com/cn/articles/deeplearning-tensorflow-casestudy http://www.tuicool.com/articles/a ...
- 跨域请求设置withCredentials
最近在做运动城项目,这一个项目下面有多个子项目,如主数据项目,pos项目等.主数据项目的域名为www.topmall.com,POS项目的域名为pos.topmall.com.即两个项目的主域名相同, ...
- mac下将根目录/更改组到普通用户,导致sudo不能用
背景:这是个很愚蠢的故事,我更改了根目录下所有文件的拥有者为普通用户[chown -R xxx / ].结果sudo/su命令都不能用了…… 问题:一旦用sudo命令或su命令就提示: sudo: ...
- java学习笔记----@Override的作用
初学java或多或少都会有这样的疑问,@Override有什么用,有的时候写,有的时候又不写,搞的初学者甚是郁闷. 做了一两年的开发说起这个问题不一定能够对答如流.小弟才疏学浅,花了点时间,看了一下资 ...
- IE6、IE7、Firefox中margin问题及input解决办法
margin不居中的问题 .div{ margin:10px;/*ff*/ *margin:15px;/*ie7*/ _margin:15px;/*ie6*/ 尺寸会变为正常的两倍,按道理应为5px ...
- google thumbnailator
Thumbnailator 是一个优秀的图片处理的Google开源Java类库.处理效果远比Java API的好. 从API提供现有的图像文件和图像对象的类中简化了处理过程,两三行代码就能够从现有图片 ...
- 一个性能较好的JVM参数配置
一个性能较好的web服务器jvm参数配置: -server//服务器模式-Xmx2g //JVM最大允许分配的堆内存,按需分配-Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次 ...
- php的无刷新实现方法
方法一: 我们通过http的204状态码,页面不跳转. 1.html代码如下: <!DOCTYPE HTML> <html lang="zh-CN"> &l ...