RESTful网络服务不能生产或消费JSON。

3

我有一个项目,服务器端使用RESTful Web服务来获取和发布数据。如果我在@Consumes和@Produces中指定MediaType为XML,则可以正常工作,但是当涉及JSON时就不行了。 以下是一个方法示例:

@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

然而,我试着按照这个问题的回答所解释的做法来处理:how correctly produce json by restful web service,但是结果没有改变。


请查看此帖子:https://dev59.com/m1sX5IYBdhLWcg3whvsn - Alejandro M López Cerezo
将返回类型更改为 Response - Sangram Badi
2个回答

2

看起来Eclipse Link存在一个错误。我认为您可能需要升级到EclipseLink 2.6.1和Jersey 2.19或更高版本,另请参见此链接。否则,您可能会缺少org.eclipse.persistence.jaxb.BeanValidationHelper的依赖项,因为该类存在于您的类路径中,但在尝试加载到JVM时会出现异常。


当我尝试添加Jersey库时,EntityManager.createCriteriaQuery变成了未知。我发现原因是这个库包含persistence.xml,但我不知道该怎么做才能使我的项目与Jersey一起工作。 - sqr_hussain
我看到这是Jersey和Hibernate的不兼容问题。但在您放置新的jar包之前,您肯定已经有了某种类型的Jersey jar包吧?难道您不可以只更新它吗? - hack_on

1

1
刚刚尝试了这里提到的解决方案https://dev59.com/m1sX5IYBdhLWcg3whvsn,其中描述了必要的步骤,以获得@Victor Jimenez答案中提到的更新的jar。效果非常好。 - Spielername

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接