Получение java.lang.NoSuchFieldError: VALUE в RamlValidationService

Я хочу создать валидатор RAML, который будет получать результаты валидации по URL-адресам RAML. Для этого я использую raml-java-parser. В соответствии с файлом readme я пытаюсь выполнить следующую строку кода:

String sourceUrl = "http://api.apihub.com/onpositive/api/espn-raml-api/espn.raml";
List<ValidationResult> results = RamlValidationService.createDefault().validate(sourceUrl);

И получите ниже сообщение об ошибке:

java.lang.NoSuchFieldError: VALUE

Почему я получаю эту ошибку? До этого я получил класс не найденных исключений, поэтому я применил ниже библиотеки jar вручную.

> juniversalchardet_1.0.3_1.0.0.jar 
> raml_parser_0.8.11_1.0.0.jar
> rhino_1.7R4_1.0.0.jar 
> snakeyaml-1.16.jar
> jackson_databind_2.4.4_1.0.0.jar

Я пробовал и то, что ниже. inputStream - это содержимое RAML, которое я проанализировал с помощью ByteArrayInputStream. Но это не недействительный RAML, поэтому я могу сделать что-то не так.

результат проверки преобразование в объект RAML

1 ответ

Решение

Никогда не видел эту ошибку. Я подозреваю, что вы все еще можете пропустить зависимости.

Действительно, синтаксический анализатор Java RAML имеет больше зависимостей, чем эти несколько JAR-файлов, которые вы добавили вручную. И зависимости, которые вы видите в pom это лишь вершина айсберга, а также множество транзитивных зависимостей.

Итак: используйте правильный менеджер зависимостей (например, Maven) для вашего проекта. Он позаботится о предоставлении всех зависимостей (прямых и переходных) для вас. Кроме того, если это не игрушечный проект, вам все равно понадобится подходящий инструмент для сборки.

Другие вопросы по тегам