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
相关产品推荐
相关产品推荐

