java.lang.NoSuchFieldError: USE_DEFAULTS jacsonannotation - PullRequest
0 голосов
/ 31 мая 2018

Я использую Emoji4j - я включил следующие библиотеки в classpath.

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)

1 Ответ

0 голосов
/ 01 июня 2018

Звучит как несколько версий внутреннего класса enum JsonInclude.Include.Это в jackson-annotations.jar, который дважды показан в приведенном выше фрагменте пути к классам.

Просмотр вокруг предполагает, что внутренний класс JsonInclude.Value и JsonInclude.Include.USE_DEFAULTS были добавлены где-то между Джексоном 2,5 и 2,6.

Emoji4j явно нуждается во внутреннем классе JsonInclude.Value, который, в свою очередь, зависит от JsonInclude.Include.USE_DEFAULTS.Если загружается более старая версия JsonInclude.Include, USE_DEFAULTS будет отсутствовать.

...