当前位置: 首页 > 后端技术 > Java

IllegalStateException-[..]不是jakarta.servlet.Filter

时间:2023-04-01 18:05:31 Java

环境Linux/Ubuntu20.04LTSIntelliJIDEACommunityEditon2021.1maven3.6.3jetty-11.0.5异常java.lang.IllegalStateException:classorg.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilterisnotajakarta.servlet.Filterusingmvrunnjetty:插件运行web应用,出现异常!Servletclassorg.restlet.ext.servlet.ServerServletisnotajakarta.servlet.Servlet(Servletclassorg.restlet.ext.servlet.ServerServletisnotajakarta.servlet.Servlet)原因jakarta.servlet.Servlet是ServletAPI版本ServletAPI版本5.0的5.0部分又是JakartaEE版本9的一部分。这只是意味着[...]中指定的Servlet类不是针对ServletAPI版本5.0编译的,而是针对旧版本编译的。技术原因是的,在从Java/JakartaEE8到JakartaEE9的步骤中,所有javax.packages都被重命名为jakarta.packages。因此,自JakartaEE9以来,不再具有向后兼容性。当我们将上述事实转化为您的具体情况时,您唯一的选择是将JettyServlet容器降级为Servlet4.0兼容版本。这是因为第三方库“Restlet”是分发给第三方的。目前还没有Servlet5.0兼容版本。根据Jetty的版本表,Jetty11.x是JakartaEE9的目标,因此您需要Jetty10.x或更早版本。或者,您可以完全放弃Restlet并改用Jersey。目前,它具有相同的9兼容版本。将[...]中指定的servlet类升级为与ServletAPI5.0版兼容的类。或者,将Servlet容器从ServletAPI版本5.0降级到至少与[...]中指定的Servlet类的目标ServletAPI版本与目标ServletAPI版本匹配。解决方法是更换低版本的jetty,直接在配置pom.xml文件中修改jetty的版本。这里使用9.X版本org.eclipse.jetty码头服务器<版本>9.4.35。v20201120或者9.4.35.v20201120可以参考https://www.it1352.com/215012...https://mvnrepository.com/art...说明【雨季吃彩虹】--Layuji由个人编译发布,编译过程难免有遗漏或错误。请大家指出,以免误导大家!