Magnolia项目部署后页面无法查看及i18n重复键错误求助
错误含义
这个错误本质是Magnolia在加载国际化消息资源时,发现./mgnl-i18n目录下的属性文件(比如messages_en.properties、messages_zh.properties这类多语言配置文件)里存在重复的键名。
Magnolia依赖这些唯一的键来匹配对应的翻译文本——不管是后台Admin Central的UI文本,还是前端网站的内容展示,都靠这些键来获取正确的文字。一旦出现重复键,系统加载时会陷入歧义:不知道该用哪个键对应的文本,不仅会抛出这个错误,还可能间接导致你之前遇到的Pages应用无页面、无法预览网站这类功能异常。
解决方法
我之前处理过类似问题,按以下步骤来就能搞定:
第一步:精准定位重复键
先去Tomcat的日志文件(一般在tomcat/logs目录下的localhost.log或catalina.out)里找详细报错信息,通常日志会明确列出重复的键名,以及涉及到的具体文件路径。如果日志信息不够详细,可以修改Magnolia的日志配置文件WEB-INF/log4j2.xml,把日志级别从info调整为debug,重启服务器后就能拿到更具体的重复键线索。第二步:清理重复定义
根据定位到的信息,分两种情况处理:- 如果是同一个
.properties文件内重复了同一个键:直接删掉多余的重复条目,保留你需要的那个版本即可。 - 如果是不同
.properties文件(比如不同模块的同语言消息文件)里重复了键:需要判断哪个定义是你需要的。比如自定义模块的消息键和Magnolia核心模块的键重复,如果你想覆盖默认文本,就保留自定义模块里的键,删掉核心模块的(或者反过来,根据你的需求)。注意:Magnolia加载消息有优先级,但重复定义本身就是不允许的,必须手动清理其中一个。
- 如果是同一个
第三步:验证修复效果
清理完重复键后,记得先清理Tomcat的work目录和webapp下的缓存文件,然后重新部署webapp:war exploded工件,启动服务器。之后检查日志是否还有这个错误,同时验证Pages应用是否能正常显示页面、访客预览功能是否恢复。
内容的提问来源于stack exchange,提问作者Moses Mwongela

