java - Args4j 列出包含未处理的空格的参数

标签 java command-line args4j

我正在处理一个奇怪的 args4j 错误。我正在处理列表命令行参数

aaa.jar -list special_date=2015-05-05 "special_name=bob the builder"

这是用 StringArrayOptionHandler 处理的

.当我检索列表的参数时,我得到的是

[special_date=2015-05-05, special_name=bob, the, builder]

Java 文档说这应该可以工作

 java -jar aaa.jar -s banan hruska jablko
 java -jar aaa.jar -s banan "hruska jablko"
 java -jar aaa.jar -s "banan hruska jablko"
 java -jar aaa.jar -s banan hruska jablko -l 4 -r
 java -jar aaa.jar -t 222 -s banan hruska jablko -r

处理带引号的单个参数时没有错误。

aaa.jar -a "bob the builder"

完美运行

谢谢

最佳答案

implementation of StringArrayOptionHandler非常简单,您可以很容易地根据自己的目的对其进行调整。这样的事情应该有效:

public class WellBehavedStringArrayOptionHandler extends OptionHandler<String> {
  public WellBehavedStringArrayOptionHandler(
      CmdLineParser parser, OptionDef option, Setter<String> setter) {
    super(parser, option, setter);
  }

  @Override
  public String getDefaultMetaVariable() {
    return Messages.DEFAULT_META_STRING_ARRAY_OPTION_HANDLER.format();            
  }

  @Override
  public int parseArguments(Parameters params) throws CmdLineException {
    int counter;
    for (counter = 0; counter < params.size(); counter++) {
      String param = params.getParameter(counter);
      if(param.startsWith("-")) {
        break;
      }
      setter.addValue(param);
    }
    return counter;
  }
}

关于java - Args4j 列出包含未处理的空格的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29964638/

相关文章:

java - 包含 Iterable 和 Iterator 的方法?

windows - 如何通过命令行更改现有文件夹的图标? ( Windows 10)

java - 如何使用 JCommander 添加命令行参数依赖?

java - 如何使用 args4j 访问子命令中的主上下文来实现子命令处理程序?

java - 项目缺少所需的库

java - 响应式(Reactive)编程(Reactor): Why main thread is stuck?

java - MOXy/JAXB 注释在 weblogic 12c 上被忽略

Python 2.7 - 为大文件下载输出命令行百分比条时遇到问题(我想要像 : 0%. ..25%...50%...75%...100% 这样的输出)?

windows - 如何在 Windows CMD 中一行运行两个命令?