java.lang.ClassNotFoundException:com.fasterxml.jackson.annotation.JsonInclude $ Value

use*_*126 34 java jackson wordpress-json-api

我试图将我的json字符串转换为java对象,我收到错误

线程"main"中的异常java.lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonInclude $ com,位于com.fasterxml.jackson的com.fasterxml.jackson.databind.cfg.MapperConfig.(MapperConfig.java:45). com.fasterxml.jackson.databind.ObjectMapper.(ObjectMapper.java:452)中的databind.ObjectMapper.(ObjectMapper.java:535)位于com.allianz.cmis.util.ApacheHttpClientGet.main(ApacheHttpClientGet.java:65)引起的:java.lang.ClassNotFoundException:com.fasterxml.jackson.annotation.JsonInclude $ java 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更多

这是我的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;
    }

}
Run Code Online (Sandbox Code Playgroud)

Java代码

ObjectMapper mapper = new ObjectMapper(); List<Fields> list = mapper.readValue(output, TypeFactory.defaultInstance().constructCollectionType(List.class,Fields.class)); System.out.println(list);

Mon*_*ded 33

如何将其添加到您的pom.xml中

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${jackson.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • @BakedInhalf它应该在你的根源目录中 (2认同)

Vin*_*ino 21

Jackson marshalling/unmarshalling需要以下相同版本的jar文件.

  1. 杰克逊核心

  2. 杰克逊 - 数据绑定

  3. 杰克逊的注解

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


Mar*_* K. 20

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

也许你的类路径中没有jackson-annotation JAR,至少在正确的版本中没有.您可以使用该命令分析使用的库版本mvn dependency:tree.


Sau*_*abh 13

我有不同版本的注释 jar。将所有 3 个 jar 更改为使用相同版本的数据绑定、注释和核心 jackson jar

<dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.6</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


小智 7

即使这个答案为时已晚,我还是添加了它,因为我也经历了可怕的时间来找到同一件事的答案。唯一不同的是,我在努力使用AWS Comprehend Medical API。

目前,我正在编写此答案,如果任何人在使用任何AWS开发工具包时都遇到相同的问题,请将jackson-annotaions或任何jackson依赖项降级到2.8。*版本。 由于某些原因,最新的2.9。*版本无法与AWS SDK一起正常使用。任何人都有其背后的原因有任何想法,请在下面随意评论。

以防万一有人懒于google maven repos,我已经链接了必要的repos.Check他们!

  • 现在,您可以使用新的 2.10.0 版本,而不是降级,它为我解决了这个问题。 (3认同)

小智 5

我也遇到了类似的问题,通过参考上述解决方案,我能够解决该问题。

所有依赖项必须具有相同的版本

以下是pom.xml文件中添加的依赖项

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.7</version>
</dependency>


 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.8.7</version>
 </dependency>


 <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.7</version>
  </dependency>
Run Code Online (Sandbox Code Playgroud)