AEMaaCS发布端ACS Commons 404.jsp文件缺失报错求助
问题本质
尽管自定义404页面能正常显示,但发布端日志持续报错找不到/apps/acs-commons/components/utilities/errorpagehandler/404.jsp,核心原因是ACS Commons的UI组件未正确部署到发布实例,或自定义错误处理器脚本引用了不存在的文件。
可能原因
1. 嵌入包部署路径错误
你将ACS Commons的ui.apps和ui.content包嵌入到项目自定义的/apps/anaplan-packages/.../install目录,AEMaaCS对第三方嵌入包的部署逻辑要求其按自身结构直接部署到对应路径,自定义install目录会导致ACS的组件文件无法被正确提取到/apps/acs-commons下。
2. 过滤器规则拦截
项目的filter.xml可能包含过滤/apps/acs-commons路径的规则,或<filter>true</filter>配置导致ACS包内的文件被过滤,未同步到发布实例。
3. 自定义错误处理器脚本引用问题
你的/apps/sling/servlet/errorhandler/404.jsp中存在对ACS Commons 404.jsp的引用,但该文件未部署,触发脚本执行异常。
解决方案
1. 修正嵌入包配置
修改主项目pom.xml中的embedded配置,移除自定义target路径,让ACS Commons包按自身结构部署:
<embedded> <groupId>com.adobe.acs</groupId> <artifactId>acs-aem-commons-ui.apps</artifactId> <type>zip</type> <filter>true</filter> <isAllVersionsFilter>true</isAllVersionsFilter> </embedded> <embedded> <groupId>com.adobe.acs</groupId> <artifactId>acs-aem-commons-ui.content</artifactId> <type>zip</type> <filter>true</filter> <isAllVersionsFilter>true</isAllVersionsFilter> </embedded>
或直接将target设置为/,确保包内容直接部署到根路径对应位置。
2. 调整过滤器规则
打开项目META-INF/vault/filter.xml,添加允许/apps/acs-commons路径的规则,避免过滤:
<filter root="/apps/acs-commons"> <include pattern="/apps/acs-commons/**"/> </filter>
3. 验证ACS Commons包部署状态
在AEM发布实例的包管理器中,确认acs-aem-commons-ui.apps-5.3.0.zip已成功安装,且/apps/acs-commons/components/utilities/errorpagehandler/404.jsp文件存在。若未安装,可手动上传安装该包,或重新构建部署项目确保嵌入包被正确安装。
4. 调整错误处理器脚本
- 若自定义404.jsp无需依赖ACS的404.jsp,直接移除对应的
<%@ include %>语句; - 若需要依赖,则确保ACS的文件已正确部署,或修正引用路径为实际存在的文件位置。
内容的提问来源于stack exchange,提问作者eagleinhills

