(我在 Stackoverflow 上的第一篇文章,maven 和 Jersey 的新手;-)
尝试开发一个独立的 jersey-JSON-应用程序,我从最新的 mvn 原型(prototype)开始
mvn archetype:generate org.glassfish.jersey.archetypes:jersey-quickstart-grizzly2
默认情况下,没有 JSON 支持。我设法在 Eclipse 中导入并运行它,并看到“明白了!”我的浏览器中的页面。 JSON 支持可以(?)通过取消 pom.xml 和 Main.java 中的行注释来激活。因此,在使用 Maven 生成的新项目中,我在 pom.xml 中激活了以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>${jersey-version}</version>
</dependency>
...然后使用 mvn eclipse:eclipse 导入到 Eclipse。然后在 Eclipse 中,编辑 Main.java 并取消注释以下行:
rc.addBinder(org.glassfish.jersey.media.json.JsonJaxbBinder);
这会导致以下编译错误:“org.glassfish.jersey.media 无法解析为变量”。
然后我就陷入困境了。我哪里做错了 ?
我还想了解“JSON 支持”是什么意思?在基于 jersey-1.17 的程序的早期版本中,我设法在我的 Rest 资源上使用 @Produces({ MediaType.APPLICATION_JSON}) 注释。在“引用库”中,我看到四个 jackson 库。在新项目中我没有看到任何 jackson 库。这是因为依赖关系没有正确解决吗?或者 jersey-2.0 不再使用 Jackson 了?
感谢任何帮助。
最佳答案
主类中的注释似乎完全具有误导性,因为:
- jersey-media-moxy 不包含 org.glassfish.jersey.media.json.JsonJaxbBinder 类
- ResourceConfig 没有 addBinder 方法(至少在当前的 2.0-rc1 版本中)
无论如何,您仍然可以在 Jersey 2.0 中使用 Jackson。只需包含对 jackson-jaxrs-json-provider 的依赖即可:
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.2.0</version>
</dependency>
并注册 JacksonJaxbJsonProvider:
rc.register(JacksonJaxbJsonProvider.class);
关于Jersey 2.0-m2 中的 JSON 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024718/