Liferay 7.4.3.61升级后含Blob字段的Service Builder启动失败
Liferay 7.4.3.61升级后带Blob字段的Service Builder启动失败排查方案
首先明确:Blob类型在Liferay 7.4.3.61仍然被支持,你的问题并非功能移除,而是升级后的依赖冲突、缓存残留或配置遗漏导致。
排查步骤:
校验service.xml配置
确认Blob字段的定义格式正确,无拼写或语法错误,示例:<entity name="YourEntity" local-service="true" remote-service="false"> <column name="id" type="long" primary="true" /> <column name="fileContent" type="Blob" /> </entity>检查构建依赖
升级后Liferay的依赖版本可能调整,确保你的build.gradle(或pom.xml)包含Blob处理所需的核心依赖:// Gradle示例,按需调整 dependencies { compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel" compileOnly group: "com.liferay", name: "com.liferay.petra.sql.dsl" compileOnly group: "javax.sql", name: "javax.sql-api" compileOnly group: "mysql", name: "mysql-connector-java" // 对应你的数据库驱动 }清理构建缓存
旧缓存会导致类路径冲突,执行清理后重新构建:- Gradle:
./gradlew clean build - Maven:
mvn clean install
- Gradle:
确认模块包导入
在bnd.bnd文件中,确保导入了java.sql包(Blob属于这个包):Import-Package: \ java.sql,\ javax.sql,\ *定位具体缺失类
从错误日志中提取具体的缺失类名:- 如果是
java.sql.Blob:说明模块无法访问JDK的SQL包,重点检查bnd的Import-Package配置 - 如果是Liferay内部类:查看Liferay 7.4.3.61的Release Notes,确认是否有Service Builder的API重构,调整代码适配新类名
- 如果是
临时验证
若业务允许,将Blob字段替换为String或Clob,重新构建启动。如果能正常运行,说明问题确实集中在Blob的依赖/配置上,再针对性排查上述步骤。
内容的提问来源于stack exchange,提问作者DyM
相关产品推荐
相关产品推荐

