杰克森·爪哇。lang.NoSuchFieldError:使用注释
我正在使用Emoji4j——我已经在类路径中包含了下面的lib
当我运行此代码时:
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 楼答案
这听起来像是
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
将丢失