当前位置: 首页 > 知识库问答 >
问题:

Servlet类org.restlet.ext.Servlet.ServerServlet不是jakarta.Servlet.Servlet

沃瑾瑜
2023-03-14

是什么导致了这个错误?

    Caused by: jakarta.servlet.UnavailableException: Servlet class org.restlet.ext.servlet.ServerServlet is not a jakarta.servlet.Servlet
        at org.eclipse.jetty.servlet.ServletHolder.checkServletType (ServletHolder.java:499)
        at org.eclipse.jetty.servlet.ServletHolder.doStart (ServletHolder.java:377)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start (AbstractLifeCycle.java:96)
        at org.eclipse.jetty.servlet.ServletHandler.lambda$initialize$2 (ServletHandler.java:699)
        at java.util.stream.SortedOps$SizedRefSortingSink.end (SortedOps.java:357)
        at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:485)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
        at java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining (StreamSpliterators.java:312)
        at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
        at java.util.stream.ReferencePipeline$Head.forEach (ReferencePipeline.java:658)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:724)

我正在通过mvn jetty:run插件运行web应用程序

共有1个答案

段超
2023-03-14

Jakarta.Servlet.UnavailableException:Servlet类[...]不是jakarta.servlet.servlet

Jakarta.Servlet.Servlet是Servlet API Version5.0的一部分,而Servlet API Version5.0又是Jakarta EE Version9的一部分。因此,这只能意味着[...]中指定的servlet类不是针对servlet API Version5.0编译的,而是针对较旧的版本编译的。

您有两个选项:

技术原因是在从Java/Jakarta EE 8到Jakarta EE 9的步骤中,所有javax.*包都被重命名为Jakarta.*包。因此,自Jakarta EE 9以来,再也没有向下兼容了。

当我们将上述事实转化为您的特定情况时,您的唯一选择是将Jetty servlet容器降级为servlet 4.0兼容版本。这是因为第三方库“restlet”目前根本没有Servlet5.0兼容版本可用。根据Jetty的版本表,Jetty 11.x是Jakarta EE 9的目标,因此您需要Jetty 10.x或更高版本。

或者,您可以完全删除Restlet,而使用Jersey。它目前有一个雅加达EE9兼容版本可用。

    null
 类似资料:
  • 类型异常报告 消息类[com.practice.myServlet]不是Servlet 说明服务器遇到意外情况,无法完成请求。 单击此处查看项目目录 MyServlet.java web.xml

  • 对于一个项目,我试图实现JSCSSMergeServlet servlet。 在完全按照说明并通过Maven启动Jetty之后 我得到一个错误的说法: 是否有一些其他文件我需要修改,以便使这个启动和运行?

  • 主要内容:Servlet 是一种规范,Servlet 接口,JSP,Servlet 版本,AppletServlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。 Servlet 虽然被称作“小程序”,但是它的功能却异常强大,因为它是基于 Java 的,几乎可以使用所有的 Java API,Java 能做的事情,Servlet 也能做。 Java 是一种功能强大的通用型编程语言,可以处理 HTTP 请求,可以访问数据库,可以生成

  • servlet 是基于 Java 的 Web 组件,由容器进行管理,来生成动态内容。像其他基于 Java 的组件技术一样,servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 Web 服务器动态加载并运行。容器(Container),有时候也叫做 servlet 引擎,是 Web 服务器为支持 servlet 功能扩展的部分。客户端通过 se

  • 问题内容: 读一本书说servlet从容器方面是单例的。这是真的? 但是,即使是单例,我们也需要处理数据同步等 问题答案: 不能。您可以在同一Web容器中,甚至在同一Web应用程序中,在不同的Servlet名称和URL下多次实例化同一Servlet类。