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

Vaadin Hilla依赖项目中@BrowserCallable未生成前端代码求助

解决多模块Vaadin项目中@BrowserCallable服务前端代码生成问题

针对多模块Spring+Vaadin项目里,依赖子项目中的@BrowserCallable服务无法在主项目执行vaadin:generate时生成前端代码的问题,以下是具体排查和解决思路:

  • 确保依赖模块先构建并正确引入
    执行vaadin:generate前,必须保证子项目B已完成编译打包并被主项目A正确依赖:

    1. 先单独构建子项目B:mvn -pl B clean install
    2. 检查主项目A的pom.xml中,对B的依赖范围是否为compile(默认即为compile,避免设置为provided/test等会排除在classpath外的范围)
  • 校验package.properties配置的正确性
    子项目B中的META-INF/VAADIN/package.properties需满足:

    1. 文件必须被正确打包到B的jar包中:执行mvn package后,打开B的jar,确认META-INF/VAADIN/package.properties存在
    2. 文件内容格式为packages=你的包路径,使用点分隔符而非斜杠,例如packages=my.package.service,多包用逗号分隔
    3. 确保主项目A的classpath能读取到该文件:通过IDE查看A的依赖库中,B的jar里是否包含此文件
  • 修正vaadin.allowed-packages配置
    主项目A的application.properties中:

    1. 配置值必须包含子项目B中@BrowserCallable服务所在的完整包路径,支持通配符,例如vaadin.allowed-packages=my.package,my.package.*
    2. 确认配置键匹配你的Vaadin版本:Vaadin 24+使用vaadin.allowed-packages,旧版本可能需要vaadin.frontend.allowed-packages
  • 检查Vaadin Maven插件的配置
    主项目A的pom.xml中,vaadin-maven-plugin需确保扫描依赖中的类:

    1. 确保插件版本与Vaadin框架版本一致,JDK21建议搭配Vaadin 24.3+版本,避免版本不兼容
    2. 可尝试显式配置插件的扫描范围,例如:
      <plugin>
          <groupId>com.vaadin</groupId>
          <artifactId>vaadin-maven-plugin</artifactId>
          <version>${vaadin.version}</version>
          <executions>
              <execution>
                  <goals>
                      <goal>generate</goal>
                  </goals>
              </execution>
          </executions>
          <configuration>
              <!-- 显式指定要扫描的包,包含子项目B的包 -->
              <packages>my.package,my.package.service</packages>
          </configuration>
      </plugin>
      
  • 排查JDK版本兼容性
    Vaadin 24.3+官方明确支持JDK21,若使用较旧的Vaadin版本(如24.0-24.2)可能存在兼容性问题:

    1. 升级Vaadin框架及插件到最新稳定版(24.3.x及以上)
    2. 确认项目中其他依赖(如Spring Boot)也支持JDK21(Spring Boot 3.2+支持JDK21)
  • 确认@BrowserCallable服务的类定义
    确保子项目B中的服务类满足:

    1. 无编译错误,class文件存在于B的jar中
    2. 正确导入com.vaadin.flow.component.UI.BrowserCallable注解并标注
    3. 类为public访问权限,避免包私有导致无法被扫描到

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:47:49