spring 批处理 StaxEventItemReader 释放异常

rob*_*n.L 1 xml spring spring-batch

当我运行一个spring批处理项目时,发生了异常!

异常详情:

Caused by: java.lang.NullPointerException: null
at org.springframework.batch.item.xml.StaxEventItemReader.moveCursorToNextFragment(StaxEventItemReader.java:141) 
Run Code Online (Sandbox Code Playgroud)

文件名正确!

配置代码:

@Bean
@StepScope
public StaxEventItemReader xmlFileItemReader(@Value("#{jobParameters['fileType']}") String fileType,
                                             @Value("#{jobExecutionContext['extractFileName']}") String fileName) throws Exception {

    System.out.println("======================== fileName =========================="+fileName);

    StaxEventItemReader reader = new StaxEventItemReader();

    reader.setResource(new FileSystemResource(fileName));
    reader.setFragmentRootElementName("PortData");
    reader.setUnmarshaller(unmarshaller());

    reader.afterPropertiesSet();

    return reader;
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*ain 6

我希望我能评论 Padis 的回应,因为它让我走上寻找解决方案的轨道。

我在 @StepScope 范围内的读者和作者有同样的 nullPointerException 问题。泛非是完全正确的,他写道,当@Bean的类型ItemReader或ItemWriter该doOpen()功能不叫(这会导致NullPointerException)

碰巧的是,从改变我的豆子的类型ItemReader<T>来ItemStreamReader<T>并ItemWriter<T>给ItemStreamWriter<T>了我的解决方案。