我正在使用 Emoji4j - 我在类路径中包含了以下库。
当我运行这段代码时:
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
将丢失。
关于java.lang.NoSuchFieldError : USE_DEFAULTS jacsonannotation 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50631602/