在Linux上从泽西返回Json引发异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux上从泽西返回Json引发异常相关的知识,希望对你有一定的参考价值。

我开发了一个返回XML或JSON的Jersey API(取决于请求标头)。当部署在我的Windows 2012服务器(Tomcat)上时,它没有问题。

当我(在Ubuntu上编译它之后)部署到AWS(Glassfish)中的Ubuntu机器时,我在请求JSON时遇到以下错误:

The server encountered an internal error that prevented it from fulfilling this request.

exception javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper

root cause org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper

root cause java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.persistence.jaxb.BeanValidationHelper

我请求XML时没有错误。

我最初使用moxy进行JSON序列化,但后来开始使用Jackson。

有什么想法它可以在一台服务器而不是另一台服务器上运行谢谢

答案

终于搞定了这个。首先,使用Tomcat,而不是Glassfish。

然后,添加一个新的依赖项:

<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
</dependency>

我还将Jersey版本升级到2.26,但我认为这并没有带来改变。只需添加完整性(因为它确实发生)。

我不明白它起作用的原因。我一直认为Java在Windows和Linux上运行相同。但是,嘿,我只是一个愚蠢的.NET家伙。

希望这能帮助那些在这个问题上陷入无助困境的人。

以上是关于在Linux上从泽西返回Json引发异常的主要内容,如果未能解决你的问题,请参考以下文章

泽西岛异常:严重:Java 类的消息正文阅读器

Jersey ExceptionMapper未被调用

使用 objectWritter 作为书面类型时的 CORS 响应 - 泽西岛

泽西岛的 JSON ArrayList

我可以在 ASMX JSON 服务上设置 HTTP 响应代码并引发异常吗?

泽西岛:具有 1 个元素的 Json 数组被序列化为对象