是什么导致了这个错误?
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应用程序
发布于 2020-09-29 10:59:19
jakarta.servlet.UnavailableException: Servlet类。不是jakarta.servlet.Servlet
jakarta.servlet.Servlet是Servlet版本5.0的一部分,而后者又是Jakarta版本9的一部分。因此,这只能意味着在[...]中指定的servlet类不是针对Servlet版本5.0编译的,而是针对一个旧版本编译的。
你有两个选择:
[...]中指定的servlet类升级到与Servlet版本5.0兼容的类。[...]中指定的Servlet类的目标servlet版本相匹配。技术原因是,在从Java/Jakarta 8到Jakarta 9的步骤中,所有javax.*包都被重命名为jakarta.*包。因此,从Jakarta 9开始就不再有向后兼容性了。
当我们将上述事实转换为特定情况时,您唯一的选择是将Jetty容器降级为Servlet4.0兼容版本。这是因为第三方库"Restlet“目前根本没有兼容Servlet5.0的版本。根据Jetty的版本表,Jetty11.x是Jakarta 9的目标,所以您需要JettyVersion10.x或更高版本。
或者,您可以完全放弃Restlet,转而使用泽西岛。它目前有一个与Jakarta 9兼容的版本。
另请参阅:
发布于 2021-12-11 00:18:41
我试图在Wildfly服务器中运行一个Maven应用程序
我安装了20.0.1.Final,这是雅加达之前的最后一个版本
https://stackoverflow.com/questions/64117697
复制相似问题