【问题标题】:Jersey 2.25.1 HTTP STATUS 500 Error when using MediaType.APPLICATION_XMLJersey 2.25.1 HTTP STATUS 500 使用 MediaType.APPLICATION_XML 时出错
【发布时间】:2020-04-20 03:18:47
【问题描述】:
自从 2 天以来,我一直被这个问题困扰并且它不会消失。
简单解释一下我想做什么:
1) 使用 jersey 2.25.1 构建一个简单的 Restful Web 服务,将 XML 显示为输出。
2) 部署在Tomcat上
仅供参考我的 JSON 和纯文本 restful web 服务运行良好。使用 @RootElement 时,我只会收到 XML 错误。我正在使用 java 1.8、Jersy 2.25.1、tomcat 8.5
我一次又一次收到以下错误,不明白如何解决:
我也试过这两个例子,但没有运气:
1)https://www.mkyong.com/webservices/jax-rs/download-xml-with-jersey-jaxb/
我尝试了多个示例,但仍然出现此错误,我无法解决它。有人可以解释一下为什么会出现这种情况。
提前致谢。
【问题讨论】:
标签:
web-services
rest
annotations
jersey
【解决方案1】:
谢谢大家我解决了这个问题......也许这个信息会帮助每个正在寻找这个问题的人。主要问题是我不知道是什么原因如果我使用 Group Id org.glassfish.jersey.archetypes Artifact Id jersey- quickstart-webapp version 2.25.1,eclipse 用来创建一个带有 POM 文件的整个项目,如果我什至运行 https://jersey.java.net/documentation/2.5.1/media.html#d0e7129 在这个项目中
这个简单的球衣官方演示,我得到了同样的注释错误。我认为在 eclipse 创建的 POM 文件中有很多我不需要的东西,而且必须与其他东西重叠。
所以在上面的 mkyong 示例中,我只是在下面添加了依赖项,现在它工作得很好:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.2.11</version>
</dependency>
感谢大家帮助我。 :)
【解决方案2】:
只是一点点更新,甚至更新
我也在创建基本的Jeresy webApp 并面临同样的问题,但上述解决方案还不够。
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.2.11</version>
</dependency>
构建并点击我们的端点后,将出现一个新问题
javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: com/sun/xml/bind/v2/model/annotation/AnnotationReader
要解决此问题,您还需要将以下依赖项添加到 pom.xml
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-core -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.xml.bind/jaxb-impl -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
所以这是完整的解决方案,让您的 Jeresy webApp 工作