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

java - java.lang.NoSuchFieldError:USE_DEFAULTS jacsonannotation-LMLPHP

当我运行此代码时:

    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.Include的旧版本,则USE_DEFAULTS将丢失。

08-06 06:48