我正在尝试使用 apache commons CLI 解析我的命令行参数。这里的例子可能有点笨拙,但在我正在创建的程序的上下文中它是有意义的。我正在尝试读取文件模式过滤器,类似于 grep 用于选择要处理的文件。
我的论点如下所示:
Program --input *.*
我编写了一个测试程序来查看解析器看到的内容;
public static void main(String[] args) {
Options options = new Options();
options.addOption(new Option(INPUT_FILTER_SHORT, INPUT_FILTER_LONG, true, INPUT_FILTER_DESCRIPTION));
CommandLineParser parser = new BasicParser();
CommandLine cmd = parser.parse(options, args);
System.out.println(cmd.getOptionValue(INPUT_FILTER_SHORT));
}
这打印出来:
.classpath
如果我将论点更改为:
Program --input test.txt
我得到输出:
test.txt
我假设我必须做一些事情来告诉 apache commons 什么 * 不是特殊字符?我似乎无法在网上找到有关此的任何信息。
我在 Windows (7) 上遇到了这个问题。我相当确定是 *.* 导致了问题,因为当我切换到使用不使用 * 的模式时,会出现预期的模式。