2015-11-24 78 views
1
2015-11-24 15:56:32,512 [main] ERROR org.springframework.batch.core.step.AbstractStep:229[execute] - Encountered an error executing step multiThreadedStep in job extractJob 
java.lang.IllegalStateException: No resources to read. Set strict=false if this is not an error condition. 
    at org.springframework.batch.item.file.MultiResourceItemReader.open(MultiResourceItemReader.java:173) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.item.support.CompositeItemStream.open(CompositeItemStream.java:96) ~[spring-batch-infrastructure-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.step.tasklet.TaskletStep.open(TaskletStep.java:310) ~[spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:197) ~[spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:148) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:392) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:135) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:306) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.batch.core.launch.support.SimpleJobLauncher$1.run(SimpleJobLauncher.java:135) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) [spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.batch.core.launch.support.SimpleJobLauncher.run(SimpleJobLauncher.java:128) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_60] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_60] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_60] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_60] 
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration$PassthruAdvice.invoke(SimpleBatchConfiguration.java:127) [spring-batch-core-3.0.5.RELEASE.jar:3.0.5.RELEASE] 
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) [spring-aop-4.1.6.RELEASE.jar:4.1.6.RELEASE] 
    at com.sun.proxy.$Proxy33.run(Unknown Source) [na:na] 
+0

請提供更多信息,目前尚不清楚你在問什麼。 –

+0

我們有結果集,其中有100條記錄。現在我們已經創建了一個parrelel批處理應用程序來處理它,其中我們給出了4的網格大小。現在將創建4個文件,其中我們每個文件都有25個記錄。當我們試圖將這4個文件合併到一個文件中時,它會拋出一個異常,它使用xml工作,但是使用annotation拋出一個異常。多少資源在第一次加載時被設置,但是在第一步之後創建了4個文件但是因爲它最初被加載,所以那個目錄中沒有文件導致問題。 –

+0

它拋出一個異常java.lang.IllegalStateException:沒有資源可讀。如果這不是錯誤條件,則設置strict = false。 –

回答

1

您的堆棧跟蹤實際的錯誤是:java.lang.IllegalStateException: No resources to read.

這意味着,你的讀者財產resource是未設置或表達不匹配任何文件。

下面是一個例子配置:

<bean id="multiResourceReader" class="org.springframework.batch.item.file.MultiResourceItemReader"> 
    <property name="resources" value="file:folder/*.csv" /> 
    <property name="delegate" ref="delegate" /> 
</bean> 

在這種配置中,您可以看到resource屬性已被設置爲file:folder/*.csv。這意味着如果沒有匹配此表達式的文件(即文件夾中沒有CSV文件),則會拋出異常。

所以你在這裏要做的是檢查你的bean配置,並檢查文件系統中是否存在實際文件。

0

檢查了讀者的範圍是否已被定義爲「臺階」,e.g

<bean id="multiResourceReader" 
    class=" org.springframework.batch.item.file.MultiResourceItemReader" scope="step"> 
    <property name="resources" value="file:C://files/*" /> 
    <property name="delegate" ref="flatFileItemReader" /> 
</bean> 

這意味着該屬性將在運行時,而不是在初始化得到解決。我希望這可以幫助你和任何可能需要它的人。