You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Liferay 7.4 Rest Builder模块部署失败:TransformUtil编译错误

问题原因及解决方案:Liferay 7.4 Rest Builder编译错误(TransformUtil参数不匹配)

问题原因

  • Rest Builder生成的BaseUsuarioResourceImpl代码自动引用了Liferay已废弃的com.liferay.portal.kernel.util.TransformUtil类,而Liferay 7.4中该类的transform和transformToArray方法签名已变更,生成代码的参数调用方式与新方法不兼容,直接触发编译失败。
  • 本质是Rest Builder的默认模板未同步Liferay 7.4的API更新,仍在使用旧版TransformUtil的方法调用逻辑。

解决方案

1. 手动替换废弃工具类,改用Stream API实现转换

找到BaseUsuarioResourceImpl中使用TransformUtil的代码块,替换为Java Stream API的实现:

  • 列表转换示例:
    原代码:
    List<Usuario> usuarios = ...;
    List<UsuarioDTO> usuarioDTOs = TransformUtil.transform(usuarios, usuario -> toUsuarioDTO(usuario));
    
    替换后:
    List<Usuario> usuarios = ...;
    List<UsuarioDTO> usuarioDTOs = usuarios.stream()
        .map(this::toUsuarioDTO)
        .collect(Collectors.toList());
    
  • 数组转换示例:
    原代码:
    UsuarioDTO[] usuarioDTOs = TransformUtil.transformToArray(usuarios, usuario -> toUsuarioDTO(usuario), UsuarioDTO.class);
    
    替换后:
    UsuarioDTO[] usuarioDTOs = usuarios.stream()
        .map(this::toUsuarioDTO)
        .toArray(UsuarioDTO[]::new);
    

替换后记得删除TransformUtil的导入语句,按需添加java.util.stream.Collectors的导入。

2. 调整Rest Builder模板(避免后续生成重复问题)

如果需要后续执行blade gw buildREST时不再生成错误代码,可修改模块内的Rest Builder模板:

  • 进入模块目录下的src/main/resources/META-INF/rest-builder/templates
  • 找到包含TransformUtil调用的模板文件(通常是资源实现类的模板)
  • 将模板中的TransformUtil相关代码替换为Stream API实现,保存后重新执行blade gw buildREST即可生成兼容代码。

3. 重新编译部署

执行以下命令清理缓存并重新部署:

blade gw clean build deploy

内容的提问来源于stack exchange,提问作者Dimas Travieso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:07:02