В web проекте Java есть 2 объекта типа String - JSON и JSONSchema. Пытаюсь проверить соответствует ли json схеме. Добавляю в зависимости проекта Maven - Jackson. Он работает в связке вот с этой либой:
<dependency>
<groupId>com.github.fge</groupId>
<artifactId>json-schema-validator</artifactId>
<version>2.2.6</version>
</dependency>
Как только добавляю зависимости этой либы, проект перестает деплоится. В качестве локального сервера использую GlassFish.
ERROR:
java.io.IOException: com.sun.enterprise.admin.remote.RemoteFailureException: Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: org.apache.catalina.LifecycleException: java.lang.ClassNotFoundException: org.joda.time.ReadableInstant
Пробовал другие версии, не помогло.
Такая проблема сразу после добавления зависимости.
Если написать код и протестировать вне сервера, все работает.
Пример кода:
public static boolean validate(String jsonData, String jsonSchema) {
try {
JsonNode schema = JsonLoader.fromString(jsonSchema);
JsonNode data = JsonLoader.fromString(jsonData);
final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
JsonValidator validator = factory.getValidator();
ProcessingReport report = validator.validate(schema, data);
return report.isSuccess();
} catch (Exception e) {
System.err.println("ERROR WHILE VALIDATING JSON WITH SCHEMA");
throw new RuntimeException(e);
}
}
java.lang.ClassNotFoundException говорит о том, что в момент компиляции кода класс был, а в рантайме его нет. У json-schema-validator (если верить его pom.xml в maven central) есть зависимость от библиотеки yoda-time (на класс именно из этой библиотеки ругается)
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.3</version>
<scope>compile</scope>
</dependency>
Видимо, для корректной работы выбранного Вами валидатора, Вам нужно добавить в свои зависимости и эту библиотеку.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей