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

Vaadin 14应用打包为JAR后静态资源无法加载

Vaadin Flow 14 + Spring Boot 打包JAR后图片/字体不显示问题排查方案
  • 检查资源存放路径与打包规则
    Vaadin Flow 14要求静态资源(图片、字体等)必须放在src/main/resources/META-INF/resources目录下,才能在生产打包后被正确识别。先确认你的资源是否在这个路径下。同时检查pom.xml里的maven-resources-plugin配置,有没有误加<exclude>规则过滤掉.png、.woff、.woff2这类资源后缀。

  • 验证资源访问方式

    • 后端Java代码里引用资源时,别用本地文件系统路径(打包成JAR后本地路径失效),改用VaadinServlet.getCurrent().getServletContext().getResourceAsStream()或者Spring的@Resource注解来加载资源。
    • 前端(HTML模板、CSS)里的资源引用要用相对路径,比如./fonts/roboto.woff2,避免绝对路径,确保和打包后的资源结构匹配。
  • 检查打包后的JAR内容
    执行mvn clean package -Pproduction后,把生成的JAR解压,查看BOOT-INF/classes/META-INF/resources目录下有没有你的图片和字体文件。如果缺失,说明打包时资源没被正确复制,需要调整maven资源复制规则;如果文件存在但访问不了,试试清除浏览器缓存再测试(生产模式下Vaadin会给资源加哈希缓存,可能旧缓存导致加载失败)。

  • 排查Java代码修改的间接影响
    虽然你只改了Java类的函数,但要确认有没有间接修改到资源加载相关逻辑:比如是否自定义了VaadinServlet配置、添加了资源处理器Bean,或者新增了权限拦截器误拦截了图片/字体的请求(CSS能正常访问,说明拦截规则可能只漏过了CSS后缀)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:20:59