NoClassDefFoundError при использовании библиотеки Jackson
Для считывания json-файла в коллекцию написан класс
public class StartingFileJsonReader {
public static <T, C extends Collection<T>> void readAndUpdate(String fileName, C collection) {
try (FileReader fis = new FileReader(fileName);
BufferedReader bfr = new BufferedReader(fis)){
String line;
StringBuilder fileContent = new StringBuilder();
while ((line = bfr.readLine()) != null) {
fileContent.append(line);
}
convert(fileContent.toString(), collection);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static <T, C extends Collection<T>> void convert(String json, C collection) throws IOException {
ObjectMapper mapper = new ObjectMapper();
T data = mapper.readValue(json, new TypeReference<T>() {});
collection.add(data);
}
}
при компиляции вылетает следующее:
Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonView
at com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector.<clinit>(JacksonAnnotationIntrospector.java:37)
at com.fasterxml.jackson.databind.ObjectMapper.<clinit>(ObjectMapper.java:400)
at utilites.StartingFileJsonReader.convert(StartingFileJsonReader.java:35)
at utilites.StartingFileJsonReader.readAndUpdate(StartingFileJsonReader.java:27)
at Main.App.main(App.java:21)
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonView
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
... 5 more
Ответы (1 шт):
Автор решения: alexkekiy
→ Ссылка
Всем спасибо за попытки помочь, с Мавеном к сожалению так и не разобрался до конца,но буду пытаться.
Проблелема была в том что у меня стояли сначала jackson.core , а потом core и datablind, сейчас дорбавил annotations и все заработало. Лично мне было совсем не очевидно, что для базовой функции библиотеки нужно скачать ее полностью, когда она разбита по трем разным джарникам.