亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Batch ItemReader 在第一行獲取 NullPointer

Spring Batch ItemReader 在第一行獲取 NullPointer

不負相思意 2023-03-09 11:19:44
當我嘗試讀取我的 csv 文件時,我遇到了 Spring batch 的這個問題。我必須閱讀具有如下結構的CSV :valueHeader;valueHeader;valueHeader;valueHeader;valueHeader;valueHeaderconventValue;conventValue;conventValue;conventValue;conventValueconventValue;conventValue;conventValue;conventValue;conventValueconventValue;conventValue;conventValue;conventValue;conventValuevalueFooter;valueFooter;valueFooter;valueFooter;valueFooter;valueFooter我有一個MultiResourceItemReader,它委托一個String 類型的FlatFileItemReader,以便輕松地將此行映射到我在之后執行的自定義項處理器中的自定義 DTO。在我的 Tasklet 中,我像這樣注入了我的 MultiResourceItemReader bean:@Autowired    private MultiResourceItemReader<String> resourceItemReader;然后我這樣稱呼它(設置資源和上下文):    resourceItemReader.setStrict(Boolean.FALSE);    resourceItemReader.setResources(resources);    resourceItemReader.open(context.getStepContext().getStepExecution().getExecutionContext());    String currentContent = resourceItemReader.read();    while(currentContent != null) {        linesReaded.add(currentContent);        currentContent = resourceItemReader.read();    }But I am getting a **NullPointerException** in the first Line and I don't know why:20190705 19:53:30.041 INFO   com.mycomp.mycustomp.tasklet.MyCustomTasklet [[ # ]] - [MyCustomTasklet:EXECUTE]20190705 19:53:41.560 ERROR  org.springframework.batch.core.step.AbstractStep [[ # ]] - Encountered an error executing step processRebateASLIStep in job MyProyectJob
查看完整描述

1 回答

?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

您沒有在您的LineMapper. 這是添加一個的方法:


    reader.setLineMapper(new DefaultLineMapper<String>() {

        {

            //Setea los valores en la clase indicada

            setFieldSetMapper(new FieldSetMapper<String>() {


                @Override

                public String mapFieldSet(FieldSet fieldSet) throws BindException {

                    String[] values = fieldSet.getValues();

                    return String.join(";", values);

                }


            });


            setLineTokenizer(new DelimitedLineTokenizer(";"));


        }

    });

FlatFileItemReaderBuilder由于其流暢的 API,我建議使用 which更直觀。這是一個例子:


@Bean

public FlatFileItemReader<Pojo> flatFileItemReader() {

    return new FlatFileItemReaderBuilder<Pojo>()

            .name("itemReader")

            .resource(new FileSystemResource("/path/to/flat/file"))

            .targetType(Pojo.class)

            .delimited()

            .delimiter(";")

            .names("column1", "column2")

            .build();

}


查看完整回答
反對 回復 2023-03-09
  • 1 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號