我目前正在将 Spring Boot 应用程序从 2.7.9 迁移到 3.1.3。 我知道 Jetty 在 11.x 版本之前与 Spring Boot 的 servlet-api 6.0.0 不兼容,因此我决定使用承诺兼容的 jetty-server 版本 12.0.1。 不幸的是,我遇到了一个例外,即由于缺少类
JettyServletWebServerFactory
,Spring Boot 无法实例化 org.eclipse.jetty.server.handler.HandlerWrapper
的 bean,这会导致 java.lang.ClassNotFoundException: org.eclipse.jetty.server.handler.HandlerWrapper
。
为什么以及如何解决这个问题?
Jetty 12 包含许多重大 API 更改,使其与 Spring Boot 3.1 不兼容。 Jetty 12 希望在 Spring Boot 3.2 中得到支持。在此之前,您无法将 Jetty 12 与 Spring Boot 一起使用。
与其尝试将 Jetty 升级到 12,更好的选择是将 Servlet API 依赖项降级到 5.0。具体如何执行取决于您正在使用的构建系统。 这个 Spring Boot 问题中描述了一些建议。