升级Quarkus与Vaadin至v24.x.x时遇访问类错误,求解决方案
解决Quarkus 2.16.5.Final升级Vaadin到24.x.x时的类访问错误
核心原因
Vaadin 24.x.x基于Jakarta EE 9+规范,依赖的Servlet API包名为jakarta.servlet.*;而Quarkus 2.16.5.Final基于Jakarta EE 8,提供的是javax.servlet.*版本的API。两者包名不兼容,导致编译或运行时找不到jakarta.servlet.http.HttpServletRequestWrapper类。
解决方案
方案1:升级Quarkus到3.x版本(推荐)
Quarkus 3.x全面支持Jakarta EE 9+,与Vaadin 24的依赖体系完全匹配,是长期维护的最优选择:
- 修改项目构建文件(
pom.xml或build.gradle),将Quarkus版本替换为3.x系列(如3.2.x、3.3.x,需确保与Vaadin 24版本兼容)。 - 同步更新所有Quarkus相关依赖的版本至对应3.x版本。
- 批量替换代码中的包名:将所有
import javax.servlet.*替换为import jakarta.servlet.*,包括HttpServletRequest、HttpServletResponse等相关类的导入。
方案2:降级Vaadin至23.x.x版本(若无法升级Quarkus)
如果暂时无法升级Quarkus,需将Vaadin版本回退到23.x.x系列——该版本基于Jakarta EE 8,与Quarkus 2.16.5.Final的依赖完全兼容,可直接解决类找不到的问题。
额外排查步骤
- 检查项目依赖树,确认没有同时引入
javax.servlet和jakarta.servlet的冲突依赖:- Maven项目执行命令:
mvn dependency:tree - Gradle项目执行命令:
gradle dependencies
- Maven项目执行命令:
- 若发现冲突,通过依赖排除规则移除多余的Servlet API依赖。
内容的提问来源于stack exchange,提问作者Mindaugas Jaraminas
相关产品推荐
相关产品推荐

