Liferay 7.4 Rest Builder部署失败:TransformUtil类型错误求助
解决Liferay 7.4 Rest Builder服务中TransformUtil编译报错问题
问题核心
自动生成代码依赖废弃的TransformUtil包,替换为com.liferay.petra.function.transform.TransformUtil后,因新旧版本方法签名差异,出现transform和transformToArray方法的类型参数不匹配编译错误。
修复步骤
修正方法调用的泛型参数
- 旧废弃包的
transform允许隐式类型转换,Petra包要求显式声明泛型参数:// 原代码 TransformUtil.transform(list, mapper); // 修改后 TransformUtil.<SourceType, TargetType>transform(list, mapper); transformToArray方法需明确指定目标数组类型:// 原代码 TransformUtil.transformToArray(list, mapper); // 修改后 TransformUtil.transformToArray(list, mapper, TargetType[].class);
- 旧废弃包的
配置Rest Builder自动生成正确代码
- 编辑项目的
rest-builder.yml,添加配置让生成器直接使用Petra包工具类:code-generator: dependencies: - com.liferay.petra:com.liferay.petra.function imports: - com.liferay.petra.function.transform.TransformUtil - 重新执行代码生成命令,避免手动修改后被覆盖:
./gradlew buildRest
- 编辑项目的
确认依赖配置正确性
- 检查
build.gradle中是否引入Petra函数依赖,版本匹配Liferay 7.4对应版本:dependencies { compileOnly group: "com.liferay", name: "com.liferay.petra.function", version: "3.0.0" }
- 检查
清理缓存并重新编译
- 清除旧编译缓存:
./gradlew clean - 重新编译项目:
./gradlew compileJava
- 清除旧编译缓存:
注意事项
- 手动修改生成代码后,再次执行
buildRest会覆盖修改,务必通过配置文件控制代码生成逻辑。 - 检查所有
TransformUtil调用处,确保泛型参数的输入、输出类型与集合、映射器的实际类型完全匹配。
内容的提问来源于stack exchange,提问作者diego-sanchez
相关产品推荐
相关产品推荐

