【发布时间】:2015-03-20 09:27:57
【问题描述】:
我不明白为什么类路径在我的代码中不起作用。我正在尝试使用外部文件资源初始化 MatFileReader。
<bean id="contents" class="org.apache.commons.io.IOUtils" factory-method="toString">
<constructor-arg
value="classpath:data/nps/power_spectrum/input.mat"
type="java.io.InputStream" />
</bean>
<bean id="matInput" class="com.jmatio.io.MatFileReader">
<constructor-arg
name="fileName"
value="classpath:data/nps/power_spectrum/input.mat" />
</bean>
classpath 正在使用第一个 bean (id=contents)。我可以读取 input.mat 文件的内容。但是,在第二个 bean (id=matInput) 中。我得到了FileNotFoundException。看起来编译器未能替换关键字classpath。 MatFileReader 的构造函数将 String 作为参数。如果我使用绝对路径而不是classpath,它可以工作。但是,我想使用classpath,请问如何解决?
【问题讨论】:
-
你的 bean id 是
id="matInput"还是id=matinput? -
对不起,它是“matInput”。但是,仍然有 FileNotFoundException
-
您是否尝试将
value="classpath:data/nps/power_spectrum/input.mat"替换为value="classpath:/data/nps/power_spectrum/input.mat"?或使用index=0insetaad ofname='fileName'? -
两种方法都试过了,还是不行。让我感到困惑的是,第一个 id="contents" 的 bean 正在使用相同的 URI。我可以读取该 .mat 文件的内容。但是,那个 MatFileReader 将文件名作为字符串。
-
看看我的答案并试一试。
标签: java spring dependency-injection