Orbeon Forms编译后首页与Form Builder静态资源加载失败
自行编译Orbeon Forms 2022.1 CE静态资源加载失败排查方案
问题现象
自行编译源码部署后,页面样式、交互完全异常,日志中出现大量XFormsServer级别ERROR报错,提示could not read asset to aggregate,涉及缺失的资源包括:
- 核心框架CSS:YUI容器样式、Bootstrap样式、Form Runner系列样式、主题样式、组件样式
- 第三方依赖JS/CSS:CodeMirror、Select2、TinyMCE、wPaint、jQuery、Ladda、Dragula等XBL组件依赖库
环境信息
- Orbeon版本:Orbeon Forms 2022.1 CE
- JDK版本:openjdk 11.0.12 2021-07-20(Microsoft构建版本)
- sbt版本:项目内版本1.6.2,脚本版本1.6.2
- Ant版本:Apache Ant 1.9.2
排查修复步骤
- 校验构建流程完整性
Orbeon Forms 2022.1 CE的构建链路强依赖Ant做静态资源预处理,直接执行sbt编译/打包会跳过第三方资源拉取、目录初始化步骤,这是该类报错最常见的原因。必须严格按顺序执行以下命令:- 进入源码根目录,执行
ant orbeon-resources拉取所有内置第三方静态资源、默认配置资源 - 执行
ant orbeon-war完成资源目录结构初始化 - 再执行sbt对应的编译、打包/本地启动命令
- 进入源码根目录,执行
- 校验资源拉取结果
执行完Ant资源拉取任务后,检查源码目录下src/resources/xbl、src/resources/ops子目录,确认CodeMirror、Select2等第三方库存放在对应路径下。如果目录为空,说明构建时网络不通导致资源拉取失败,需要配置可正常访问Orbeon资源仓库的网络环境后重新执行资源拉取任务。 - 排除JDK兼容性问题
当前使用的Microsoft OpenJDK 11.0.12存在已知的NIO文件流句柄释放异常问题,会导致资源聚合时读取文件失败,建议替换为Adoptium OpenJDK 11.0.16及以上的11大版本更新包,重新执行构建。 - 清理构建缓存
依次执行以下操作清空历史构建残留的无效文件:- 执行
sbt clean清空sbt编译缓存 - 删除源码根目录下的
build文件夹,清空Ant构建缓存 - 重新按完整流程执行构建
- 执行
验证方法
构建完成后,检查生成的war包内WEB-INF/resources/ops/路径下的聚合CSS、JS文件,确认文件大小不为0KB,部署后访问页面如果不再出现could not read asset to aggregate报错,即说明问题修复。如果是开发模式调试,可以临时在配置文件中将oxf.xforms.assets.combine参数设为false,跳过资源聚合步骤,先验证单个资源路径映射是否正常。
内容的提问来源于stack exchange,提问作者Chad
相关产品推荐
相关产品推荐

