代码之家  ›  专栏  ›  技术社区  ›  Giorgi Tsiklauri

JAXB的XML注释与JDK8一起使用,但在JDK11中找不到throw messagebodywriter[重复]

  •  0
  • Giorgi Tsiklauri  · 技术社区  · 7 年前

    在开发JAX-RS(Jersey)应用程序时,我使用 @XmlRootElement @XmlElement 启用XML媒体类型作为响应主体。

    例外:
    21-Jan-2019 12:29:28.601 SEVERE [http-nio-8080-exec-4] org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo MessageBodyWriter not found for media type=text/plain, type=class org.mypack.model.Message, genericType=class org.mypack.model.Message.

    有什么小窍门吗?

    1 回复  |  直到 7 年前
        1
  •  -1
  •   Giorgi Tsiklauri    7 年前

    解决方案

    我听说很多人都有这个问题,所以我觉得我找到的解决方案应该更好地分享,我甚至会详细解释一下:

    我考虑的这个问题实际上有两个不同点:

    1. JDK版本 建设(编制)项目;
    2. JDK版本 对于要在其上运行项目的Web容器(Tomcat)(在Intellij中,它处于运行/调试配置下,必须为服务器指定JDK)。

    把我们的,它 无关紧要 无论您使用Java编译器还是JDK 8或11,它都在两种情况下工作,您已经用JDK8或JDK11构建了它。 (你只需要考虑一下,默认情况下 JAXB ( package javax.xml.bind.annotation )从JDK11中删除,因此您将手动将其添加为依赖项/jar)。 真正重要的是你为你提供的Java版本。 网络容器 .

    如果(例如) 雄猫 将运行在JDK11上,JAXB将不工作,即使您将在类路径上拥有它,也无视您用来构建项目的Java版本。 另一方面,如果您将JDK8作为一个平台提供 为您的服务器 (编辑/调试ItILLJ中的配置),那么JAXB将无视您用来构建项目的Java。 (使用JDK11,您将添加一个依赖项/jar,使用JDK8,它在 基础类库 ) .