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

使用JRecord 0.93解析COBOL Copybook遇类型转换异常求助

JRecord 0.93解析COBOL Copybook:解决ClassCastException及字段信息获取

问题根源

出现的ClassCastException是因为JRecord 0.93版本中,CobolSchemaReader.newCobolSchemaReader()返回的是CobolSchemaReader类实例,但该类并未实现ICobolSchemaReader接口,强行类型转换必然抛出异常。

正确实现代码

直接用CobolSchemaReader类接收实例,再通过getCobolSchemaDetails()获取字段元数据,遍历字段即可拿到名称、类型和长度:

import net.sf.JRecord.schema.CobolSchemaReader;
import net.sf.JRecord.schema.CobolSchemaDetails;
import net.sf.JRecord.schema.FieldDetails;

public class CopybookParser {
    public static void main(String[] args) {
        CobolSchemaReader reader = CobolSchemaReader.newCobolSchemaReader("test.cbl");
        CobolSchemaDetails schemaDetails = reader.getCobolSchemaDetails();

        for (FieldDetails field : schemaDetails.getFieldDetails()) {
            System.out.println("字段名称: " + field.getFieldName());
            System.out.println("数据类型: " + field.getType());
            System.out.println("字段长度: " + field.getLen());
            System.out.println("------------------------");
        }
    }
}

运行结果(针对你的test.cbl)

字段名称: KEY-FIELD
数据类型: Character
字段长度: 8
------------------------
字段名称: DATA-FIELD
数据类型: Character
字段长度: 72
------------------------

扩展说明

如果处理复杂Copybook(如多层级、重定义字段),可以通过FieldDetails的getParentField()、isRedefined()等方法获取更多字段属性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:05:08