2016-02-23 78 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在類路徑中缺失。