Я пытаюсь использовать библиотеку JCommander с groovy, я использую этот тестовый скрипт, основанный на коде из документации библиотеки, это одна из важных частей
@Grapes(
@Grab(group='org.jcommander', module='jcommander', version='2.0')
)
import com.beust.jcommander.*
Flags flags = new Flags()
JCommander.newBuilder()
.addObject(flags)
.build()
.parse(args);
println "OK"
@Parameters(parametersValidators = QuietAndVerboseAreMutualExclusive.class)
public class Flags {
@Parameter(names = "--quiet", description = "Do not output anything")
boolean quiet;
@Parameter(names = "--verbose", description = "Output detailed information")
boolean verbose;
}
public class QuietAndVerboseAreMutualExclusive implements IParametersValidator {
@Override
public void validate(Map parameters) throws ParameterException {
// validation stuff
}
}
Проблема возникла
@Parameters(parametersValidators = QuietAndVerboseAreMutualExclusive.class)
Я получаю сообщение об ошибке
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/tmp/2/test.groovy: 18: 'parametersValidators'is not part of the annotation Parameters in @com.beust.jcommander.Parameters
@ line 18, column 1.
@Parameters(parametersValidators = QuietAndVerboseAreMutualExclusive.class)
^
/tmp/2/test.groovy: 18: Unexpected type java.lang.Object in @com.beust.jcommander.Parameters
@ line 18, column 36.
@Parameters(parametersValidators = QuietAndVerboseAreMutualExclusive.class)
^
2 errors
это javadoc с аннотацией параметров javadoc @Parameters, кажется, я использую его правильно.
Я пробовал несколько других такие способы, как
@Parameters(parametersValidators = [QuietAndVerboseAreMutualExclusive.class])
@Parameters(parametersValidators = [QuietAndVerboseAreMutualExclusive.class] as Class[])
Подробнее здесь: https://stackoverflow.com/questions/790 ... mmander-li