jCommander - 下一个参数被认为是一个值
jCommander - Next Parameter is considered as a value
我对 JCommander 有疑问。如果 required 参数 iam testing 没有值,我希望程序抛出异常。当我忘记为最后一个参数添加一个值时,我想要的这个异常就会发生。
示例(注意:所有参数都是必需的和字符串):
--user hugo --password boss --confirmPassword //no value
com.beust.jcommander.ParameterException: Expected a value after parameter --comfirmPassword
如果我忘记为其他参数添加值,则下一个参数被视为该值。
--user --password --confirmPassword hugo
//--password is considered as the value of user
由于这种行为,无法再找到 --password,我得到了错误的异常。
com.beust.jcommander.ParameterException: the following options are required: --password
有没有办法告诉 jCommander 他不应该将下一个参数视为一个值?
所以我检查了文档。
如果您确定您的参数不会以 --
为前缀,您可以单独添加参数验证。
public class IsUserName implements IParameterValidator {
public void validate(String name, String value)
throws ParameterException {
if (value.startsWith("--")) {
throw new ParameterException("probably missing user name");
}
}
}
@Parameter(names = "--user", validateWith = IsUserName.class)
private String user;
另一种选择可能是将 variableArity
标志与参数验证结合使用。尝试根据 0 长度检查参数。
看看参数验证是如何完成的(字符串,字符串)对,它很可能不支持变量参数。
我对 JCommander 有疑问。如果 required 参数 iam testing 没有值,我希望程序抛出异常。当我忘记为最后一个参数添加一个值时,我想要的这个异常就会发生。
示例(注意:所有参数都是必需的和字符串):
--user hugo --password boss --confirmPassword //no value
com.beust.jcommander.ParameterException: Expected a value after parameter --comfirmPassword
如果我忘记为其他参数添加值,则下一个参数被视为该值。
--user --password --confirmPassword hugo
//--password is considered as the value of user
由于这种行为,无法再找到 --password,我得到了错误的异常。
com.beust.jcommander.ParameterException: the following options are required: --password
有没有办法告诉 jCommander 他不应该将下一个参数视为一个值?
所以我检查了文档。
如果您确定您的参数不会以 --
为前缀,您可以单独添加参数验证。
public class IsUserName implements IParameterValidator {
public void validate(String name, String value)
throws ParameterException {
if (value.startsWith("--")) {
throw new ParameterException("probably missing user name");
}
}
}
@Parameter(names = "--user", validateWith = IsUserName.class)
private String user;
另一种选择可能是将 variableArity
标志与参数验证结合使用。尝试根据 0 长度检查参数。
看看参数验证是如何完成的(字符串,字符串)对,它很可能不支持变量参数。