请帮助您在SPRING批处理中配置unix位置路径的资源路径。在Windows机器上试用它时工作正常。
属性文件中配置的属性。 位置= //家/目录/ file.txt的
XML配置:
<bean id="diDeactivateReader" class="org.springframework.batch.item.file.FlatFileItemReader">
<property name="resource"
value="**file:${location}**" />
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.DefaultLineMapper">
<property name="lineTokenizer">
<bean
class="org.springframework.batch.item.file.transform.FixedLengthTokenizer">
<property name="names" value="${column.names}" />
<property name="columns" value="${column.position}" />
</bean>
</property>
<property name="fieldSetMapper">
<bean class="org.test.TestMapper" />
</property>
</bean>
</property>
</bean>
错误:
Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): class path resource [//home/dir/file.txt]
at org.springframework.batch.item.file.FlatFileItemReader.doOpen(FlatFileItemReader.java:250)
at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:134)
... 15 more
答案 0 :(得分:1)
在幕后,它可能使用UrlResource,tutorial如何指定文件路径。由于你正在使用linux机器,因此必须连续四次使用“/”。
resource = new UrlResource("file:////home/dir/file.txt");
为什么需要这么多斜杠,请参阅URL documentation:
<scheme>://<authority><path>?<query>#<fragment>
如果规范的路径组件以斜杠字符“/”开头,那么 路径被视为绝对路径,规范路径替换上下文 路径。
因此第三个“/”指定路径是绝对的,而“/home/dir/file.txt”是路径本身。