我一直在努力解决这个问题。没有错误,但我没有看到理想的答案:
public class Clopts {
private static Options options = null;
private static final String InputDir = "i";
private static final String OutputDir = "o";
private String input;
private CommandLine cmd = null;
static{
options = new Options();
options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );
}
public static void main(String[] args) {
Clopts cliProg = new Clopts();
cliProg.loadArgs(args);
}
private void loadArgs(String[] args){
CommandLineParser parser = new PosixParser();
try {
cmd = parser.parse(options, args);
} catch (ParseException e) {
System.err.println("Error parsing arguments");
e.printStackTrace();
System.exit(1);
}
if (cmd.hasOption(InputDir)){
input = cmd.getOptionValue(InputDir);
System.out.println(input); // This is always null :(
}
}
}
我正在传递论据-i foo -o bar
但是,每当我看到无效时,我都没有看到foo或bar。
另外我想在主模块中打印。如何从命令行获取选项,然后打印出选项的内容。
答案 0 :(得分:4)
使用以下方法定义选项时:
options.addOption(InputDir, false, "Input Directory");
options.addOption(OutputDir, false, "Output Directory. " + OutputDir );
false
表示他们不接受争论。如果您需要选项值,则必须在此处指定true
。