与 Jackson 2.9.2 兼容的 Jersey 版本都有哪些
Posted
技术标签:
【中文标题】与 Jackson 2.9.2 兼容的 Jersey 版本都有哪些【英文标题】:What are the Jersey versions compatible with Jackson 2.9.2与 Jackson 2.9.2 兼容的 Jersey 版本有哪些 【发布时间】:2018-04-25 12:15:33 【问题描述】:您能帮我解决这两个疑问/问题吗:
任何曾经在 Jackson 2.9.2 上工作过的人都可以告诉我 Jackson 2.9.2 的兼容 Jersey 版本是什么。我目前正在使用 Jersey 2.23.2,但它不适用于 Jackson 2.9.2。我明白了以下错误:
[ERROR ] SRVE0777E: Exception thrown by application class 'org.glassfish.jersey.servlet.WebComponent.serviceImpl:489'
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.util.BeanUtil.okNameForSetter(Lcom/fasterxml/jackson/databind/introspect/AnnotatedMethod;)Ljava/lang/String;
at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1290)
2)一般来说,有没有办法找到罐子的组合。我之前也遇到过这个问题,同时找到了泽西罐和弹簧罐的正确组合。如果有人的话,它将为我和其他人面临同样的问题节省很多时间可以指导一下。
谢谢。
【问题讨论】:
【参考方案1】:截至 2017 年 11 月中旬,Jersey 的最新版本是 2.26。
Jersey 通过jersey-media-json-jackson
扩展模块支持Jackson,该扩展模块与Jersey 核心模块的版本号相同。此扩展模块包含可自动发现的 JacksonFeature
,它注册了 JacksonJsonProvider
类以将 JSON 绑定到 Java 对象。
在 2.26 版本中,此扩展依赖于 Jackson 2.8.4。在 2.23.2 版本中,它依赖于 Jackson 2.5.4。
BeanUtil.okNameForSetter(Annotated Method)
方法在 Jackson 2.5 中已弃用,并已在 Jackson 2.9 中删除。
要支持最新版本的 Jackson,您可以去掉 jersey-media-json-jackson
扩展模块。
然后将jackson-jaxrs-json-provider
模块添加到您的项目中,并直接在您的ResourceConfig
或Application
实现中注册JacksonJsonProvider
。
【讨论】:
【参考方案2】:我收到与以下相同的错误:
[ERROR ] SRVE0777E: Exception thrown by application class 'org.glassfish.jersey.servlet.WebComponent.serviceImpl:489'
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException:
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.util.BeanUtil.okNameForSetter(Lcom/fasterxml/jackson/databind/introspect/AnnotatedMethod;)Ljava/lang/String;
我能够用
解决上述问题Jersey2 version: 2.23.2
Jackson version: 2.7.4
【讨论】:
以上是关于与 Jackson 2.9.2 兼容的 Jersey 版本都有哪些的主要内容,如果未能解决你的问题,请参考以下文章
RestEasy + Jackson 和 JBoss EAP 6.4
Spring Boot 2.0.3RELEASE+Swagger2 2.9.2+Swagger ui 2.9.2 + easypoi 3.2.0版本不兼容