当我尝试启动spring boot应用程序时,出现了以下错误。它甚至在我提供我的作业参数之前就给出了一个错误,我的作业参数就是我的作业参数。
大量讨论建议将资源用作
file:#{jobParameters[controlFileInput]}
解决这个问题。但这对我不起作用。提前谢谢。
批处理xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:batch="http://www.springframework.org/schema/batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/batch
http://www.springframework.org/schema/batch/spring-batch-3.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:property-placeholder location="classpath:application.properties" />
<bean id="stepScope" class="org.springframework.batch.core.scope.StepScope">
<property name="autoProxy" value="true" />
</bean>
<bean id="billItemWriteListener"
class="com.telstra.billubfreader.listener.BillItemWriteListener" />
<bean id="billItemProcessListener"
class="com.telstra.billubfreader.listener.BillItemProcessListener" />
<bean id="fileMovingToErrorTasklet"class="com.telstra.billubfreader.ErrorFileMover" />
<bean id="fileMovingToSuccessTasklet"
class="com.telstra.billubfreader.SuccessFileMover" />
<bean id="billControlFileItemReader" class="org.springframework.batch.item.file.FlatFileItemReader"
scope="step">
<property name="resource" value="file:#{jobParameters[controlFileInput]}" />
<property name="linesToSkip" value="${control.linetoskip}" />
<property name="lineMapper">
<bean class="com.telstra.billubfreader.mapper.BillControlLineMapper">
<property name="lineTokenizer">
<bean class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer">
</bean>
</property>
<property name="fieldSetMapper">
<bean
class="com.telstra.billubfreader.mapper.BillControlFieldDataMapper" />
</property>
</bean>
</property>
</bean>
<bean id="billControlItemProcessor" class="com.telstra.billubfreader.BillControlItemProcessor"
scope="step">
</bean>
<bean id="billControFileItemwriter" class="com.telstra.billubfreader.BillControlItemWriter"
scope="step">
</bean>
<batch:job id="billControlFileReaderJob" restartable="true">
<batch:step id="billControlFileRaderStep1">
<batch:tasklet>
<batch:chunk reader="billControlFileItemReader"
processor="billControlItemProcessor" writer="billControFileItemwriter"
commit-interval="25">
<batch:listeners>
<batch:listener ref="billItemWriteListener" />
<batch:listener ref="billItemProcessListener" />
<batch:listener ref="promotionListener"/>
</batch:listeners>
</batch:chunk>
</batch:tasklet>
<batch:next on="FAILED" to="fileMovingtoError" />
<batch:next on="COMPLETED" to="fileMovingToSuccess" />
</batch:step>
<batch:step id="fileMovingtoError">
<tasklet ref="fileMovingToErrorTasklet"/>
</batch:step>
<batch:step id="fileMovingToSuccess">
<tasklet ref="fileMovingToSuccessTasklet"/>
</batch:step>
</batch:job>
<bean id="promotionListener"
class="org.springframework.batch.core.listener.ExecutionContextPromotionListener">
<property name="keys" value="filesToMove"/>
</bean>
</beans>
日志
2018-04-25 12:10:05.779信息22716---[主]o.s.batch。果心工作SimpleStepHandler:步骤已完成或无法重新启动,因此没有要执行的操作:步骤执行:id=1,版本=15,名称=billControlFileRaderStep1,状态=放弃,exitStatus=失败,readCount=0,filterCount=0,writeCount=0 readSkipCount=0,writeSkipCount=0,processSkipCount=0,commitCount=0,rollbackCount=0,exitDescription=org。springframework。一批项目ItemStreamException:未能初始化读取器
位于组织。springframework。一批项目支持AbstractItemCountingItemStreamItemReader。打开(AbstractItemCountingItemStreamItemReader.java:149)
在太阳下。反映NativeMethodAccessorImpl。invoke0(本机方法)
在太阳下。反映NativeMethodAccessorImpl。调用(未知源)
在太阳下。反映DelegatingMethodAccessorImpl。调用(未知源)
在java。lang.reflect。方法调用(未知源)
位于组织。springframework。aop。支持A计算机。invokeJoinpointUsingReflection(AopUtils.java:338)
位于组织。springframework。aop。框架ReflectiveMethodInvocation。invokeJoinpoint(ReflectiveMethodInvocation.java:197)
位于组织。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:163)
位于组织。springframework。aop。支持委派导入接收器。doProceed(DelegatingIntroductionInterceptor.java:136)
位于组织。springframework。aop。支持委派导入接收器。invoke(DelegatingIntroductionInterceptor.java:124)
位于组织。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:185)
位于组织。springframework。aop。框架JDKDDynamicApproxy。调用(jdkDynamicApproxy.java:212)
在com。太阳代理$Proxy52。打开(未知源)
位于组织。springframework。一批项目支持CompositeItemStream。打开(CompositeItemStream.java:103)
位于组织。springframework。一批果心步微线程。TaskletStep。打开(TaskletStep.java:310)
位于组织。springframework。一批果心步抽象步骤。执行(AbstractStep.java:197)
位于组织。springframework。一批果心工作SimpleStepHandler。handleStep(SimpleStepHandler.java:148)
位于组织。springframework。一批果心工作流JobFlowExecutor。executeStep(JobFlowExecutor.java:66)
位于组织。springframework。一批果心工作流支持状态StepState。句柄(StepState.java:67)
位于组织。springframework。一批果心工作流支持SimpleFlow。简历(SimpleFlow.java:169)
位于组织。springframework。一批果心工作流支持SimpleFlow。开始(SimpleFlow.java:144)
位于组织。springframework。一批果心工作流FlowJob。doExecute(FlowJob.java:136)
位于组织。springframework。一批果心工作AbstractJob。执行(AbstractJob.java:308)
位于组织。springframework。一批果心发射支持SimpleJoblancher 1美元。run(simplejoblancher.java:141)
位于组织。springframework。果心任务SyncTaskExecutor。执行(SyncTaskExecutor.java:50)
位于组织。springframework。一批果心发射支持SimpleZoblancher。run(SimpleJobuncher.java:134
2018-04-25 12:10:06.201信息22716---[主]o.s.batch。果心工作SimpleStepHandler:步骤已完成或无法重新启动,因此没有要执行的操作:步骤执行:id=2,版本=3,名称=fileMovingtoError,状态=COMPLETED,exitStatus=COMPLETED,readCount=0,filterCount=0,writeCount=0 readSkipCount=0,writeSkipCount=0,processSkipCount=0,commitCount=1,rollbackCount=0,exitDescription=
2018-04-25 12:10:06.334信息22716-[主要]o.s.b.c.l.支持。SimpleJobLauncher:作业:[FlowJob:[名称=billControlFileReaderJob]]完成