Java RESTful web服务不生成或使用JSON
我有一个项目,我在服务器端使用RESTfulWeb服务来获取和发布数据。如果我将MediaType指定为XML(在@Consumes和@products中),它就可以正常工作,但在JSON中就不行了。 下面是一个方法示例Java RESTful web服务不生成或使用JSON,java,json,web-services,rest,Java,Json,Web Services,Rest,我有一个项目,我在服务器端使用RESTfulWeb服务来获取和发布数据。如果我将MediaType指定为XML(在@Consumes和@products中),它就可以正常工作,但在JSON中就不行了。 下面是一个方法示例 @GET @Path("{id}") @Produces({MediaType.APPLICATION_JSON}) public Product find(@PathParam("id") Integer id) { return super.find(id); }
@GET
@Path("{id}")
@Produces({MediaType.APPLICATION_JSON})
public Product find(@PathParam("id") Integer id) {
return super.find(id);
}
当我尝试调用该服务时,它会引发以下异常:
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper
然而,我试图按照这个问题的答案进行解释,但没有任何改变。似乎Eclipse中有一个链接。我认为您可能需要更新到EclipseLink 2.6.1和Jersey 2.19或更高版本,请参见。否则,您可能会缺少org.Eclipse.persistence.jaxb.BeanValidationHelper的依赖项,因为该类存在于类路径上,但在尝试加载到JVM时遇到异常。您需要下载此文件 并在下一路径中替换: C:\Program Files\glassfish-4.1.1\glassfish\modules
在我的例子中,打开和关闭IDE后,我使用Netbeans,测试RESTful。当我尝试添加Jersey库时,EntityManager.createCriteriaQuery变得未知。我发现原因是该库包含persistence.xml,但我不知道如何使我的项目与Jersey一起工作。我看到它是Jersey和Hibernate不兼容问题。但在你安装新的jar之前,你一定有一个某种类型的Jersey jar?你不能更新它吗?检查这篇文章:将返回类型更改为
Response
刚刚尝试了这里提到的解决方案,该解决方案描述了@Victor Jimenez answer中提到的更新jar的必要步骤。效果很好。