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

OTC框架生成代码编译失败:参数前多余"class "字符串

解决OTCS生成代码中DateConverterFacade参数多余"class "前缀问题

问题分析

你遇到的是OTCS脚本生成转换代码时,错误地给DateConverterFacade.convert()的第二个参数添加了class 前缀,导致代码语法错误——正确的参数写法应为XMLGregorianCalendar.class,不需要额外的class关键字。

解决方案

按以下步骤排查修复:

  • 检查OTCS脚本的copy命令配置
    当前copy命令仅指定了factoryClassName: CP1,如果CP1是自定义转换器工厂,需要确认其内部逻辑是否在生成类型参数时错误拼接了class 前缀;若CP1是OTC框架内置转换器,可能是脚本遗漏了正确的类型指定语法。

  • 修正copy命令的类型配置
    在copy节点中添加明确的类型转换配置,指定目标类型,避免框架自动推断出错。修改后的脚本示例:

    - copy:
        id: CP1
        from:
          objectPath: request.flightRequest.flightRequestOriginDestinationsCriteria.originDestCriteria[*].originDepCriteria.date
        to:
          objectPath: request.flightRequest.originDestRequest[*].originDepRequest.date
        converter:
          type: DateConverterFacade
          parameters:
            - source: from
            - targetType: XMLGregorianCalendar.class
        factoryClassName: CP1
    

    通过converter节点明确指定转换器和参数,确保生成代码时不会添加多余前缀。

  • 验证自定义转换器工厂(CP1)
    如果CP1是你实现的自定义转换器工厂类,检查其生成代码的逻辑,确认输出目标类型参数时,是否错误添加了class 字符串。比如若有类似"class " + targetType.getName()的代码,需去掉class 前缀,直接输出targetType.getName() + ".class"。

  • 重新生成代码并验证
    修正脚本或转换器工厂后,重新执行测试项目生成转换代码,检查DateConverterFacade.convert()的调用是否变为正确格式:

    originDepRequest.setDate(DateConverterFacade.convert(date, XMLGregorianCalendar.class));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:42:37