J'essaie de convertir ma chaîne json en objet Java et j'obtiens une erreur
Exception dans le fil "principal" Java.lang.NoClassDefFoundError: com/Fastxml/Jackson/Annotation/JsonInclude $ Valeur à l'adresse com.fasterxml.jackson.databind.cfg.MapperConfig. (MapperConfig.Java:45) à l'adresse com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.Java:535) à l'adresse com.fasterxml.jackson.databind.ObjectMapper. (ObjectMapper.Java:452) à com.allianz.cmis.util.ApacheHttpClientGet.main (ApacheHttpClientGet.Java:65) Causée par: Java.lang.ClassNotFoundException: com.fasterxml.jackson.annotation.JsonInclude $ Value at Java.net.URLClassLoader $ 1.run (URLClassLoader.Java:366) at Java.net.URLClassLoader $ 1.run (URLClassLoader.Java:355) sur Java.security.AccessController.doPrivileged (Native Method) sur Java.net.URLClassLoader.findClass (URLClassLoader.Java:354) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:425) à Sun.misc.Launcher $ AppClassLoader.loadClass (Launcher.Java:308) sur Java.lang.ClassLoader.loadClass (ClassLoader.Java:358) ... 4 plus
Voici ma chaîne json et mon extrait de code
chaîne json {'ctpnsw': [{'abc' , 'def' }]}
modèle
public class Fields {
private List<String> ctpnsw;
public List<String> getCtpnsw() {
return ctpnsw;
}
public void setCtpnsw(List<String> ctpnsw) {
this.ctpnsw = ctpnsw;
}
}
Code Java
ObjectMapper mapper = new ObjectMapper();
List<Fields> list = mapper.readValue(output, TypeFactory.defaultInstance().constructCollectionType(List.class,Fields.class));
System.out.println(list);
Que diriez-vous d'ajouter ceci à votre pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
J'ai eu le même message d'erreur. Dans mon cas, Jackson consistait en plusieurs fichiers JAR. Malheureusement, ils avaient différentes versions de jackson-core et jackson-annotations, ce qui a entraîné l'exception ci-dessus.
Vous n'avez peut-être pas le fichier JAR d'annotation jackson dans votre chemin de classe, du moins pas dans la version correcte. Vous pouvez analyser les versions de bibliothèque utilisées avec la commande mvn dependency:tree
.
Jackson marshalling/unmarshalling nécessite le suivi des fichiers jar de la même version.
jackson-core
jackson-databind
annotations jackson
Assurez-vous que vous avez ajouté tous ceux-ci avec la même version dans votre chemin de classe. Dans votre cas, jackson-annotations manque dans classpath.
Récupérez les 3 pots Jackson et ajoutez-les à votre chemin de construction:
https://mvnrepository.com/artifact/com.fasterxml.jackson.core
ceci est un problème de version changer de version> 2.4 à 1.9 le résoudre
<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>