Commons CLI 命令行中的空选项
Commons CLI empty Options in CommandLine
我不明白如何在 Commons CLI 中将 Options
应用到 DefaultParser
。
创建CommandLine
对象时,赋值Options
总是空的。
以下代码块是我解释 Commons CLI 文档的方式:
public static void main(String[] args) {
Options options = new Options();
options.addOption("c", false, "why are you hidding from me");
CommandLineParser parser = new DefaultParser();
System.out.println(args[0]); // this prints -c
try {
CommandLine line = parser.parse(options, args);
System.out.println(line.getArgs()[0]); // prints -c
Option[] o = line.getOptions(); // this is empty for some reason
System.out.println(o.length); // prints 0
if (line.hasOption("c")) { // false
System.out.println(" flag c found");
}
}
catch(ParseException e ) {
e.printStackTrace();
}
为什么 line.getOptions()
是空的,如何正确应用选项?
我刚刚尝试重现您的问题,但对我来说一切正常。
我创建了一个简单的 Maven 项目,其中只有 commons-cli:commons-cli:1.3.1
依赖项和 Test
main class,其方法与您在问题中提供的方法完全相同。
当我从 Windows 命令行编译和 运行 main 方法时,例如与:
java -cp .;[path_to_commons_cli_jar]/commons-cli-1.3.1.jar Test -c
然后它给了我预期的输出:
args
由单个 "-c"
值组成;
line.getArgs()
returns 一个空数组;
line.getOptions()
returns 由预期的 Option
对象组成的单个条目数组。
当您在 eclipse 中启动程序时,您使用的命令行中可能还有一些剩余空间没有被删除?否则,您的代码应该可以正常工作...
我不明白如何在 Commons CLI 中将 Options
应用到 DefaultParser
。
创建CommandLine
对象时,赋值Options
总是空的。
以下代码块是我解释 Commons CLI 文档的方式:
public static void main(String[] args) {
Options options = new Options();
options.addOption("c", false, "why are you hidding from me");
CommandLineParser parser = new DefaultParser();
System.out.println(args[0]); // this prints -c
try {
CommandLine line = parser.parse(options, args);
System.out.println(line.getArgs()[0]); // prints -c
Option[] o = line.getOptions(); // this is empty for some reason
System.out.println(o.length); // prints 0
if (line.hasOption("c")) { // false
System.out.println(" flag c found");
}
}
catch(ParseException e ) {
e.printStackTrace();
}
为什么 line.getOptions()
是空的,如何正确应用选项?
我刚刚尝试重现您的问题,但对我来说一切正常。
我创建了一个简单的 Maven 项目,其中只有 commons-cli:commons-cli:1.3.1
依赖项和 Test
main class,其方法与您在问题中提供的方法完全相同。
当我从 Windows 命令行编译和 运行 main 方法时,例如与:
java -cp .;[path_to_commons_cli_jar]/commons-cli-1.3.1.jar Test -c
然后它给了我预期的输出:
args
由单个"-c"
值组成;line.getArgs()
returns 一个空数组;line.getOptions()
returns 由预期的Option
对象组成的单个条目数组。
当您在 eclipse 中启动程序时,您使用的命令行中可能还有一些剩余空间没有被删除?否则,您的代码应该可以正常工作...