Ответ 1
Как добавить это в свой pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
Я пытаюсь преобразовать мою json-строку в объект java, и я получаю сообщение об ошибке
Исключение в потоке "main" java.lang.NoClassDefFoundError: com/quickxml/jackson/annotation/JsonInclude $Value в com.fasterxml.jackson.databind.cfg.MapperConfig. (MapperConfig.java:45) в com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.java:535) в com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.java:452) at com.allianz.cmis.util.ApacheHttpClientGet.main(ApacheHttpClientGet.java:65) Вызвано: java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonInclude $Value на java.net.URLClassLoader $1.run(URLClassLoader.java:366) на java.net.URLClassLoader $1.run(URLClassLoader.java:355) в java.security.AccessController.doPrivileged(собственный метод) на java.net.URLClassLoader.findClass(URLClassLoader.java:354) в java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher $AppClassLoader.loadClass(Launcher.java:308) в java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... еще 4
Вот моя строка json и мой фрагмент кода
json string
{'ctpnsw': [{'abc' , 'def' }]}
модель
public class Fields {
private List<String> ctpnsw;
public List<String> getCtpnsw() {
return ctpnsw;
}
public void setCtpnsw(List<String> ctpnsw) {
this.ctpnsw = ctpnsw;
}
}
Код Java
ObjectMapper mapper = new ObjectMapper();
List<Fields> list = mapper.readValue(output, TypeFactory.defaultInstance().constructCollectionType(List.class,Fields.class));
System.out.println(list);
Как добавить это в свой pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
У меня было то же сообщение об ошибке. В моем случае Джексон состоял из нескольких файлов JAR. К сожалению, у них были разные версии аннотаций jackson-core и jackson-аннотаций, что привело к вышеупомянутому исключению.
Возможно, у вас нет JAR с аннотацией Джексона в вашем classpath, по крайней мере, не в правильной версии. Вы можете проанализировать используемые версии библиотеки с помощью команды mvn dependency:tree
.
Распределение/разборки Джексона требует следующих файлов jar той же версии.
джексон-жильный
джексон-DataBind
ДЖЕКСОНА-аннотаций
Убедитесь, что вы добавили все это с той же версией в свой путь к классам. В вашем случае джоксон-аннотации отсутствует в пути к классам.
Получите все 3 барабана Jackson и добавьте их в свой путь сборки:
https://mvnrepository.com/artifact/com.fasterxml.jackson.core
это версия проблемы изменения версии> 2,4 до 1,9 решить ее
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-xml-provider</artifactId>
<version>2.4.1</version>
в
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.4</version>
Используйте jackson-bom, который будет иметь все три версии jackson.iejackson-annotations, jackson-core и jackson-databind. Это разрешит зависимости, связанные с этими версиями