在 Linux 上从泽西岛返回 json 会引发异常



我开发了一个Jersey API,它返回XML或JSON(取决于请求标头(。当部署在我的Windows 2012服务器(Tomcat(上时,它可以正常工作。

当我在 AWS (Glassfish 上编译后(部署到 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>

我还将泽西岛版本升级到 2.26,但我认为这没有什么不同。只是为了完整性而添加它(因为它确实发生了(。

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

希望这能帮助那些像我一样在这个问题上陷入无助的人。

相关内容

  • 没有找到相关文章

最新更新