You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot多模块项目Vaadin路由无法定位问题咨询

解决Vaadin+Spring Boot多模块路由找不到的问题

我刚踩过类似的多模块拆分坑,帮你一步步捋清楚问题:

核心问题分析

你碰到的Couldn't find route for ''错误,本质是Spring没有扫描到Vaadin的@Route视图类,主要有两个关键诱因:

1. 依赖Scope配置错误

你的Boot模块对app_frontend的依赖用了<scope>runtime</scope>,这个scope意味着该模块的类只会在运行时被加载,但Spring的组件扫描(包括Vaadin路由注册)是在应用启动阶段执行的,此时runtime scope的类还未被加载,自然找不到你的MainView。

2. 组件扫描范围的潜在遗漏

虽然你加了@ComponentScan(basePackages = {"my.app"}),但需要确认app_frontend模块里的Vaadin视图类确实在my.app或其子包下,否则Spring还是扫不到对应的路由类。


具体解决方案

第一步:修正依赖Scope

把Boot模块pom里的依赖scope从runtime改成compile(默认就是compile,也可以直接删掉scope标签):

<dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>app_frontend</artifactId>
    <version>${project.version}</version>
    <scope>compile</scope> <!-- 替换原来的runtime -->
</dependency>

这样Boot模块在编译和启动阶段都能访问到app_frontend的类,Spring就能扫描到带@Route的MainView了。

第二步:确认组件扫描范围

检查app_frontend模块的MainView所在包,比如如果它在my.app.frontend.view下,你的@ComponentScan(basePackages = {"my.app"})已经覆盖了这个路径,没问题;如果包不在my.app下,需要把对应的包路径加到basePackages里,比如:

@ComponentScan(basePackages = {"my.app", "com.another.package"})

第三步:验证路由注册

启动项目后,查看控制台日志,找类似这样的日志:

Registered route for 'MainView' with parent routes ''

如果能看到这条日志,说明Vaadin已经成功注册了路由,访问localhost:8080(或者你配置的端口)就能正常看到视图了。


内容的提问来源于stack exchange,提问作者user3252485

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:10:12