Vaadin 14.10.1升级后flow-server 2.9.2出现NoSuchMethodError报错求助
解决Vaadin 14.10.1升级后Jsoup方法找不到的报错
问题背景
将Vaadin版本从14.4.4升级至14.10.1后,在flow-server 2.9.2的com.vaadin.flow.component.polymertemplate.TemplateDataAnalyzer.inspectTwoWayBindings方法(第244行)出现以下报错:
java.lang.NoSuchMethodError: 'org.jsoup.nodes.Element org.jsoup.nodes.Element.traverse(org.jsoup.select.NodeVisitor)'
问题原因
该错误属于依赖版本冲突:Vaadin 14.10.1对应的Flow 2.9.2依赖的Jsoup版本,与项目中其他依赖引入的Jsoup版本不兼容。旧版本Jsoup中不存在traverse(NodeVisitor)方法,导致运行时无法定位到该方法。
解决步骤
排查项目中的Jsoup依赖来源
使用构建工具查看依赖树,定位引入不兼容Jsoup版本的依赖:- Maven:执行命令
mvn dependency:tree | grep jsoup - Gradle:执行命令
gradle dependencies | grep jsoup
- Maven:执行命令
强制统一Jsoup版本
Vaadin Flow 2.9.2要求的Jsoup版本为1.14.3,在构建文件中强制指定该版本:- Maven(在
<dependencyManagement>节点下添加):<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.14.3</version> </dependency> - Gradle(在
build.gradle中添加):configurations.all { resolutionStrategy.force 'org.jsoup:jsoup:1.14.3' }
- Maven(在
清理并重新构建项目
- Maven:
mvn clean install - Gradle:
gradle clean build
- Maven:
验证修复
启动应用,检查该报错是否消失。
额外建议
Polymertemplate在Vaadin 14后期版本已标记为过时,建议后续逐步迁移至Lit模板,减少后续版本升级的兼容性风险。
内容的提问来源于stack exchange,提问作者Abhishek-M
相关产品推荐
相关产品推荐

