FlatFileParseException 解析错误 - Spring Batch

Posted

技术标签:

【中文标题】FlatFileParseException 解析错误 - Spring Batch【英文标题】:FlatFileParseException Parsing error - Spring Batch 【发布时间】:2016-02-16 15:05:18 【问题描述】:

我关注了这个tutorial,我收到了FlatFileParseException 错误:

org.springframework.batch.item.file.FlatFileParseException:解析 行错误:1 in resource=[class path resource [country.csv]], 输入=[AA,阿鲁巴]

country.csv

AA,Aruba
BB,Baruba

这是我的ItemReader 方法

@Bean
    public ItemReader<Country> reader() 
        FlatFileItemReader<Country> reader = new FlatFileItemReader<Country>();
        reader.setResource(new ClassPathResource("country.csv"));
        reader.setLineMapper(new DefaultLineMapper<Country>() 
            setLineTokenizer(new DelimitedLineTokenizer() 
                setNames(new String[]  "countryCode", "countryName" );
            );
            setFieldSetMapper(new BeanWrapperFieldSetMapper<Country>() 
                setTargetType(Country.class);
            );
        );
        return reader;
    

Country.java

@Entity
@Table(name="Country")
public class Country  

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false, updatable = false)
    Long id;

    @Column(name = "countryCode", nullable = false, updatable = false)
    String countryCode;

    @Column(name = "countryName", nullable = false, updatable = false)
    String countryName;

    public Country(String countryCode, String countryName) 
        this.countryCode = countryCode;
        this.countryName = countryName;

    

    public Long getId() 
        return id;
    

    public void setId(Long id) 
        this.id = id;
    

    public String getCountryCode() 
        return countryCode;
    

    public void setCountryCode(String countryCode) 
        this.countryCode = countryCode;
    

    public String getCountryName() 
        return countryName;
    

    public void setCountryName(String countryName) 
        this.countryName = countryName;
    

    @Override
    public String toString() 
        return "countryCode: " + countryCode + ", countryName: " + countryName;
    

【问题讨论】:

请发布完整的堆栈跟踪;但我将从 Country 的 empty-ctor 和 countryName 的 setter 开始 【参考方案1】:

这里的问题是您在 Country 类中缺少默认的无参数构造函数。

您正在使用BeanWrapperFieldSetMapperFieldSet 映射到对象。引用setTargetType(type) Javadoc:

每次调用mapFieldSet(FieldSet)时,都会从其默认构造函数中创建一个这种类型的对象。

因此,您需要添加一个默认构造函数并为属性提供相应的getter / setter。

【讨论】:

以上是关于FlatFileParseException 解析错误 - Spring Batch的主要内容,如果未能解决你的问题,请参考以下文章

第4.4节 Python解析与推导:列表解析字典解析集合解析

云解析DNS如何实现智能解析?

全民解析vip视频哪个好

mybatis源码配置文件解析之五:解析mappers标签(解析class属性)

什么是DNS域名解析,怎样解析?

DNS域名解析服务(正向解析反向解析)