升级依赖后HttpServlet30Dispatcher未实现jakarta.servlet.Servlet异常求助
问题分析与解决方案
问题原因
你遇到的UT010009异常核心是Servlet API包体系不兼容:
- Undertow 2.3.x版本已切换到Jakarta EE规范,依赖
jakarta.servlet.Servlet接口 - 你当前使用的Resteasy 3.15.x版本仍基于传统Java EE规范,实现的是
javax.servlet.Servlet接口
两者分属不同包体系,导致Undertow无法识别Resteasy的ServletDispatcher类。
解决方案(二选一)
方案1:升级Resteasy到支持Jakarta的版本
Resteasy从4.x版本开始全面支持Jakarta EE规范,将Resteasy升级到4.x或更高稳定版(示例用4.7.6.Final),保持Undertow版本不变:
<!-- Undertow 版本保持不变 --> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-core</artifactId> <version>2.3.12.Final</version> </dependency> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-servlet</artifactId> <version>2.3.12.Final</version> </dependency> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-websockets-jsr</artifactId> <version>2.3.12.Final</version> </dependency> <!-- 升级Resteasy到兼容Jakarta的版本 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-undertow</artifactId> <version>4.7.6.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>4.7.6.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> <version>4.7.6.Final</version> </dependency>
方案2:降级Undertow到兼容javax.servlet的版本
若暂时不想升级Resteasy,可将Undertow降级到2.2.x版本(该版本仍使用javax.servlet包),保持Resteasy版本不变:
<!-- 降级Undertow到2.2.20.Final --> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-core</artifactId> <version>2.2.20.Final</version> </dependency> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-servlet</artifactId> <version>2.2.20.Final</version> </dependency> <dependency> <groupId>io.undertow</groupId> <artifactId>undertow-websockets-jsr</artifactId> <version>2.2.20.Final</version> </dependency> <!-- Resteasy版本保持不变 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-undertow</artifactId> <version>3.15.6.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-jaxrs</artifactId> <version>3.15.6.Final</version> </dependency> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> <version>3.15.6.Final</version> </dependency>
额外注意事项
- 调整依赖后,执行
mvn clean install清理缓存,避免旧依赖残留引发冲突 - 若项目中还有其他Servlet相关依赖,需确保它们的包体系(javax/jakarta)与所选方案一致
内容的提问来源于stack exchange,提问作者V.K
相关产品推荐
相关产品推荐

