初始读取器在弹簧批处理中的步骤失败

时间:2013-11-08 14:14:59

标签: java spring-batch

我很抱歉,我无法提供有关错误影响的批次的大量信息。

我想知道当XML输入文件位于正确的repo中时,初始化读取器时可能导致错误的原因。在初始化常见简单步骤的读取器过程时,弹簧批次v1和弹簧批次v2之间是否有任何变化?

我们几天前将批次迁移到弹簧批次V2。

  

错误org.springframework.batch.core.step.AbstractStep []遇到执行步骤的错误   org.springframework.batch.item.ItemStreamException:无法初始化阅读器                   在org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:142)                   在org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96)                   在org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:306)                   在org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:192)                   在org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:137)                   在org.springframework.batch.core.job.flow.JobFlowExecutor.executeStep(JobFlowExecutor.java:64)                   在org.springframework.batch.core.job.flow.support.state.StepState.handle(StepState.java:60)                   在org.springframework.batch.core.job.flow.support.SimpleFlow.resume(SimpleFlow.java:152)                   在org.springframework.batch.core.job.flow.support.SimpleFlow.start(SimpleFlow.java:131)                   在org.springframework.batch.core.job.flow.FlowJob.doExecute(FlowJob.java:135)                   在org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:301)                   在org.springframework.batch.core.launch.support.SimpleJobLauncher $ 1.run(SimpleJobLauncher.java:134)                   在org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)                   在org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:127)                   在org.springframework.batch.core.launch.support.CommandLineJobRunner.start(CommandLineJobRunner.java:351)                   在org.springframework.batch.core.launch.support.CommandLineJobRunner.main(CommandLineJobRunner.java:577)   引起:java.lang.IllegalStateException:输入资源必须存在(读者处于'严格'模式)                   在org.springframework.batch.item.xml.StaxEventItemReader.doOpen(StaxEventItemReader.java:187)                   在org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:139)                   ......还有15个

2 个答案:

答案 0 :(得分:5)

Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode不言自明,缺少资源,设置'严格'模式会导致错误 如果您确定资源位于正确的位置,请检查您是否使用正确的语法来标识资源路径(file:,classpath:,url:或Spring支持的其他语句)?

答案 1 :(得分:4)

在org.springframework.batch.item.xml.StaxEventItemReader bean中将属性strict设置为false,如下所示:

<property name="strict" value="false" />

这将记录Spring尝试查找的路径(这对于调试此类错误非常有用):

WARN: StaxEventItemReader.doOpen() - Input resource does not exist class path resource [path-to-resource]

但是,strict = false将导致StaxEventItemReader不再抛出异常(因此您可能希望之后将StaxEventItemReader更改回strict = true)。