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

问题描述 投票:0回答:12

我正在尝试将 json 字符串转换为 java 对象,但出现错误

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/annotation/JsonInclude$Value
    at com.fasterxml.jackson.databind.cfg.MapperConfig.<clinit>(MapperConfig.java:45)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(ObjectMapper.java:535)
    at com.fasterxml.jackson.databind.ObjectMapper.<init>(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);`
java jackson wordpress-json-api
12个回答
96
投票

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

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

70
投票

Jackson 编组/解组需要以下相同版本的 jar 文件。

  1. 杰克逊核心

  2. 杰克逊数据绑定

  3. 杰克逊注释

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


29
投票

我有同样的错误消息。就我而言,Jackson 由多个 JAR 文件组成。遗憾的是,他们有不同版本的 jackson-core 和 jackson-annotations,导致了上述异常。

也许您的类路径中没有 jackson-annotation JAR,至少没有正确的版本。您可以使用命令

mvn dependency:tree
来分析所使用的库版本。


21
投票

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

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

15
投票
尽管这个答案已经太晚了,但我还是添加了它,因为我也经历了一段可怕的时间来寻找同一件事的答案。唯一不同的是,我在 AWS Comprehend Medical API 上遇到了困难。

目前我正在写这个答案,如果有人在任何 AWS SDK 中遇到相同的问题,请

将 jackson-annotaions 或任何 jackson 依赖项降级到 2.8.* 版本。 由于某种原因,最新的 2.9.* 版本无法与 AWS SDK 正常工作。如果有人知道这背后的原因,请随时在下面发表评论。

以防万一有人懒得去 google maven 存储库,我已经链接了必要的存储库。检查一下!

  • Jackson-Core 仓库
  • Jackson-Core-Databind - 2.8.11.3
  • 杰克逊核心 - 2.8.6
  • 杰克逊注释 - 2.8.11

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>
    

3
投票
获取所有 3 个 jackson jar 并将它们添加到您的构建路径中:

https://mvnrepository.com/artifact/com.fasterxml.jackson.core


3
投票
使用 jackson-bom,它将拥有所有三个 jackson 版本,即 jackson-annotations、jackson-core 和 jackson-databind。这将解决与这些版本相关的依赖关系


0
投票
这是版本问题 将版本 > 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>


0
投票
开始添加所需的

jackson

 相关 jar,这有助于将 
JSON
 转换为 
POJO
POJO
JSON
 响应。 (
jackson-core
jackson-annotations
jackson-databind
)。让我们假设您已经添加了这些 Jar,但您仍然面临这个问题,这里是一些故障排除步骤

故障排除步骤:

    首先检查它们是否与任何其他 Jackson 相关的 jar 存在任何冲突,这些 jar 带有使用 maven 命令的不同 spring/java 相关 jar
  1. mvn dependecy:tree
    如果您发现任何冲突的 jackson jar 尝试排除它们,如下所示
<exclusion> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </exclusion> </<exclusions>

    如果没有发现任何冲突,则转到本地 maven .m2 目录(存储所有本地 maven 依赖项),验证期望的类是否是 jar 的一部分。

cd (.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.2.2)


jar -xvf

这个命令会爆炸jar并生成所有相应的类

    如果它不起作用,仍然尝试从本地存储库(.m2)删除/重新导入杰克逊相关文件夹。可以通过执行maven命令重新导入(
  1. mvn clean install
    )

0
投票
抱歉参加晚会,但使用以下依赖项解决了我的问题。

附链接:

https://github.com/jcustenborder/kafka-connect-spooldir/issues/156

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

    

-3
投票
使用 Jackson-annotations.jar 可以解决问题,因为它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.