Servlet类org.restlet.ext.servlet.ServerServlet不是jakarta.servlet.Servlet [英] Servlet class org.restlet.ext.servlet.ServerServlet is not a jakarta.servlet.Servlet

查看:376
本文介绍了Servlet类org.restlet.ext.servlet.ServerServlet不是jakarta.servlet.Servlet的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

什么可能导致此错误?

    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插件运行网络应用

I'm running the web app from mvn jetty:run plugin

推荐答案

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

jakarta.servlet.UnavailableException: Servlet class [...] is not a jakarta.servlet.Servlet

jakarta.servlet.Servlet是Servlet API版本5.0的一部分,而Servlet API版本5.0则又是Jakarta EE版本9的一部分.这仅意味着[...]中指定的Servlet类不是针对Servlet API 5.0版本编译的,而是针对较旧的版本.

The jakarta.servlet.Servlet is part of Servlet API version 5.0 which in turn is part of Jakarta EE version 9. This can thus only mean that the servlet class specified in [...] is NOT compiled against Servlet API version 5.0, but against an older version.

您有2个选择:

  1. [...]中指定的servlet类升级到与Servlet API版本5.0兼容的一个.

  1. Upgrade the servlet class specified in [...] to a Servlet API version 5.0 compatible one.

或者,将Servlet容器从Servlet API 5.0版降级到以前的版本,至少与[...]中指定的Servlet类的目标Servlet API版本相匹配.

Or, downgrade the servlet container from Servlet API version 5.0 to a previous version, at least the one matching the target Servlet API version of the servlet class specified in [...].

技术原因是在从Java/Jakarta EE 8到Jakarta EE 9的步骤中,所有javax.*软件包都被重命名为jakarta.*软件包.因此,自Jakarta EE 9起,就不再存在向后兼容性.

The technical reason is that during the step from Java/Jakarta EE 8 to Jakarta EE 9 all javax.* packages have been renamed to jakarta.* packages. So there is no backwards compatibility anymore since Jakarta EE 9.

当我们将上述事实转化为您的具体情况时,您唯一的选择是将Jetty Servlet容器降级到Servlet 4.0兼容版本.这是因为第三方库"Restlet"被分配给第三方.目前还没有Servlet 5.0兼容版本.根据Jetty的版本表,Jetty 11.x是Jakarta EE 9的目标,因此您需要Jetty 10.x或更早的版本.

When we translate the above facts to your specific situation, your only option is to downgrade the Jetty servlet container to a Servlet 4.0 compatible version. This is because the 3rd party library "Restlet" has currently no Servlet 5.0 compatible version available at all. According to Jetty's version table, Jetty 11.x is Jakarta EE 9 targeted, so you need Jetty version 10.x or older.

或者,您可以完全放下Restlet,而改用Jersey.目前,它具有与Jakarta EE 9兼容的版本.

Alternatively, you can drop Restlet altogether and use Jersey instead. It has currently a Jakarta EE 9 compatible version available.

  • Jetty versions
  • Getting java.lang.ClassNotFoundException: jakarta.servlet.Filter on Maven/Jersey web service while running on Tomcat 9

这篇关于Servlet类org.restlet.ext.servlet.ServerServlet不是jakarta.servlet.Servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆