Получение 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, поэтому я могу сделать что-то не так.
1 ответ
Никогда не видел эту ошибку. Я подозреваю, что вы все еще можете пропустить зависимости.
Действительно, синтаксический анализатор Java RAML имеет больше зависимостей, чем эти несколько JAR-файлов, которые вы добавили вручную. И зависимости, которые вы видите в pom
это лишь вершина айсберга, а также множество транзитивных зависимостей.
Итак: используйте правильный менеджер зависимостей (например, Maven) для вашего проекта. Он позаботится о предоставлении всех зависимостей (прямых и переходных) для вас. Кроме того, если это не игрушечный проект, вам все равно понадобится подходящий инструмент для сборки.