2015-06-25 2 views
0

Я получаю сообщение об ошибке в Eclipse при попытке простого примера с пакетом JCommander. Ошибка говорит:validateWith не определено для типа аннотации Параметр (JCommander)

Атрибут validateWith не определено для типа аннотаций Параметр

и код, я использую следующий:

import java.nio.file.Path; 
import java.util.ArrayList; 
import java.util.List; 

import com.beust.jcommander.*; 
import com.beust.jcommander.validators.PositiveInteger; 

public class JCommanderExample { 

    @Parameter(names = { "-sp", "-semAndPrec"}, validateWith = CorrectPathValidator.class) 
    private Path semAndPrec; 

} 

Конечно, я предоставили класс CorrectPathValidator, как описано в документации по адресу http://jcommander.org/#Parameter_validation.

Вот класс:

import java.nio.file.Paths; 

import com.beust.jcommander.IParameterValidator; 
import com.beust.jcommander.ParameterException; 

public class CorrectPathValidator implements IParameterValidator { 
    public void validate(String name, String value) throws ParameterException { 
     try { 
      Paths.get(value); 
     } catch (Exception e) { 
      String error = "Parameter " + name + " should be a path (found " 
        + value + ")"; 
      throw new ParameterException(error); 
     } 
    } 
} 

Видимо я что-то не хватает, но пример на http://jcommander.org/#Parameter_validation, кажется, идентичен тому, что я пробовал:

@Parameter(names = "-age", validateWith = PositiveInteger.class) 
private Integer age; 

Может кто-то пожалуйста, скажите мне, почему Я получаю ошибку?

+0

действительно ли кто-нибудь может помочь мне решить это? – Alby

ответ

0

Я подозреваю, что это связано с тем, что вы пытаетесь проанализировать тип «Путь», который не является одним из типов разбора JCommander. Эта ошибка, похоже, говорит о том, что ваш валидатор пытается проверить «неопределенный параметр» типа «Путь».

Либо измените свой параметр как тип, который автоматически обрабатывается: http://jcommander.org/#Types_of_options или внесите нестандартный тип: http://jcommander.org/#Custom_types.

Затем валидатор должен работать.

Смежные вопросы