2016-02-23 145 views
15

我想我的JSON字符串转换成Java对象,我得到错误

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonInclude$Value at com.fasterxml.jackson.databind.cfg.MapperConfig.(MapperConfig.java:45) at com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:535) at com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:452) at com.allianz.cmis.util.ApacheHttpClientGet.main(ApacheHttpClientGet.java:65) Caused by: 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) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 4 more

这是我的JSON字符串和我代码片段

JSON字符串 {'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);

回答

10

我有同样的错误消息。就我而言,杰克逊包含多个JAR文件。可悲的是,他们有不同版本的jackson-core和jackson-annotations,导致了上述例外。

也许你的类路径中没有jackson-annotation JAR,至少不是正确的版本。

+1

JAX-RS和jsonschema2pojo,例如有不同的版本,杰克逊作为依赖(Maven中)。强制特定版本(在依赖管理中)解决了这个问题。 –

16

如何增加这你的pom.xml

<dependency> 
    <groupId>com.fasterxml.jackson.core</groupId> 
    <artifactId>jackson-annotations</artifactId> 
    <version>${jackson.version}</version> 
</dependency> 
+0

pom.xml应该放在哪里? –

+1

@BakedInhalf它应该在你的根目录下 – MonoThreaded

2

杰克逊编组/解组要求的相同版本以下jar文件。

  1. 杰克逊核心

  2. 杰克逊,数据绑定

  3. 杰克逊的注解

    确保添加了所有这些与你的类路径相同的版本。在你的情况下,jackson-annotations在类路径中缺失。