如何使用Spring 3从classpath加载文件?

时间:2012-11-27 13:20:40

标签: java spring classpath

我已经像这样定义了一个ClassPathResource bean:

<bean id="ivsInputResource" class="org.springframework.core.io.ClassPathResource">
    <qualifier value="ivs" />
    <constructor-arg index="0"
        value="classpath*:IVS90test.csv"/>
</bean>

但是当注入资源bean时,我的应用程序会因此异常而中断:

Caused by: java.lang.IllegalStateException: Input resource must exist (reader is in 'strict' mode): class path resource [classpath*:IVS90test.csv]
    at org.springframework.batch.item.file.FlatFileItemReader.doOpen(FlatFileItemReader.java:256)
    at org.springframework.batch.item.support.AbstractItemCountingItemStreamItemReader.open(AbstractItemCountingItemStreamItemReader.java:134)

显然无法找到资源。当使用FileSystemResource(带有调整路径)时,我的应用程序可以正常工作。

如何从类路径正确加载文件?

我的项目如图所示:

screenshot of project layout in eclipse

1 个答案:

答案 0 :(得分:1)

使用ClassPathResource

时,您无需在文件路径中指定classpath:
  

<强>参数
  path - 类路径中的绝对路径

此处,绝对路径表示来自资源文件夹的根目录,因此您需要做的就是将其更改为

<bean id="ivsInputResource" class="org.springframework.core.io.ClassPathResource">
    <qualifier value="ivs" />
    <constructor-arg index="0"
        value="IVS90test.csv"/>
</bean>