java.lang.NoSuchFieldError : USE_DEFAULTS jacsonannotation 错误

标签 java jackson annotations

我正在使用 Emoji4j - 我在类路径中包含了以下库。

Libraries added to the Projects

当我运行这段代码时:

    String message = sCurrentLine.split(",")[6];
            String[] words = message.split(" ");
            for (String s : words) {
                System.out.println(s);
                System.out.print( " Have " +EmojiUtils.isEmoji(s)+  " 
   Emojis" );
    }

它给了我以下错误:

    Exception in thread "main" java.lang.NoSuchFieldError: USE_DEFAULTS
    at com.fasterxml.jackson.annotation.JsonInclude$Value.<clinit> 
    (JsonInclude.java:247)
    at com.fasterxml.jackson.databind.cfg.ConfigOverrides.<init> 
    (ConfigOverrides.java:55)
    at com.fasterxml.jackson.databind.ObjectMapper.<init> 
    (ObjectMapper.java:564)
    at com.fasterxml.jackson.databind.ObjectMapper.<init> 
    (ObjectMapper.java:480)
    at emoji4j.EmojiManager.<clinit>(EmojiManager.java:23)
    at emoji4j.EmojiUtils.getEmoji(EmojiUtils.java:39)
    at emoji4j.EmojiUtils.isEmoji(EmojiUtils.java:60)
    at com.isme.test.EmojiTest.main(EmojiTest.java:39)

最佳答案

这听起来像是 JsonInclude.Include 内部枚举类的多个版本。这是在 jackson-annotations.jar 中,它在上面的类路径摘录中显示了两次。

四处浏览表明 JsonInclude.Value 内部类和 JsonInclude.Include.USE_DEFAULTS 已添加到 Jackson 2.5 和 2.6 之间的某处。

Emoji4j 显然需要 JsonInclude.Value 内部类,而后者又依赖于 JsonInclude.Include.USE_DEFAULTS。如果正在加载旧版本的 JsonInclude.IncludeUSE_DEFAULTS 将丢失。

关于java.lang.NoSuchFieldError : USE_DEFAULTS jacsonannotation 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50631602/

相关文章:

java - Jackson 2 中的序列化器基础发生了变化

iphone - 无法从 map View 中删除所有注释

java - 使用注释处理获取静态 FIELD 值

java - Jackson 序列化报告无法序列化的字段列表

总结其他注解的Java注解

java - 如何从 ElasticSearch 中的形状获取相交点

java - 无法在针对 java 8 的 java 9 下构建 javafx 应用程序

Java 8 常量函数命名约定

java - JAVA中如何使静态方法线程安全?

Java : Json with duplicate keys to map using Jackson