无法读取资源属性Spring Batch的Unix服务器路径

时间:2014-07-23 05:59:51

标签: java spring unix spring-batch

请帮助您在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

1 个答案:

答案 0 :(得分:1)

在幕后,它可能使用UrlResource,tutorial如何指定文件路径。由于你正在使用linux机器,因此必须连续四次使用“/”。

resource = new UrlResource("file:////home/dir/file.txt");

为什么需要这么多斜杠,请参阅URL documentation

<scheme>://<authority><path>?<query>#<fragment>
  

如果规范的路径组件以斜杠字符“/”开头,那么   路径被视为绝对路径,规范路径替换上下文   路径。

因此第三个“/”指定路径是绝对的,而“/home/dir/file.txt”是路径本身。