Liferay 7.1.3-ga4升级至7.2.1-ga2出现NoSuchModuleException报错如何解决
Liferay版本升级故障修复及可行方案
故障根因
报错的核心原因是数据库中存储的Marketplace模块元数据与实际部署的LPKG包版本不匹配:
- 从6.2迁移到7.1时残留的旧模块元数据未清理,7.2版本已废弃CE Foundation系列的旧LPKG包,升级过程中Marketplace服务尝试删除不存在的模块记录,触发
NoSuchModuleException - 误删
/osgi/marketplace下的LPKG文件导致7.1实例缺失核心依赖包,直接造成原实例无法运行
分步操作方案
1. 恢复原有7.1实例可用性
- 下载同版本的liferay-ce-portal-7.1.3-ga4官方安装包,解压后将
/osgi/marketplace目录下的所有文件完整复制到你的故障7.1实例对应路径 - 启动7.1实例确认运行正常后,立即备份全量数据库和实例所有文件,所有后续操作都基于该备份执行
2. 清理残留元数据(解决升级报错)
7.1实例运行验证通过后执行以下操作:
- 停止7.1实例,连接业务数据库,执行SQL清除所有Marketplace残留记录:
DELETE FROM Marketplace_Module; DELETE FROM Marketplace_App;
- 删除实例目录下
/osgi/state文件夹,清除OSGi运行缓存,避免旧模块状态残留
3. 执行7.2版本升级
- 准备liferay-ce-portal-7.2.1-ga2的干净安装包,不要复用旧实例的
/osgi/marketplace目录内容 - 将7.1实例的配置文件(如
portal-ext.properties)、附件存储目录(document_library)迁移到7.2实例对应路径 - 执行数据库升级脚本
db_upgrade.sh(Windows环境执行db_upgrade.bat),此时不会再出现模块不存在的报错 - 升级流程提示完成后,启动7.2实例,检查系统日志和业务功能可用性
注意事项
- 由于你的系统是从6.2迭代升级而来,升级完成后需要逐一验证自定义开发的Portlet兼容性,部分6.2时期开发的组件可能需要适配7.2的API规则
- 7.2版本已内置原CE Foundation系列的全部核心功能,不需要额外安装已停止维护的旧版LPKG包
内容的提问来源于stack exchange,提问作者William Andrés Bernal
相关产品推荐
相关产品推荐

