Java.io.FileNotFoundException: 类路径资源[WEB-INF/classes/library.properties]无法打开,因为它不存在。

4
在我的Spring应用程序中,我有一个简单的属性文件位于WEB-INF\classes文件夹中,这样它、DispatcherServlet和其他各种配置文件都在classpath中。
该属性文件在DispatcherServlet中定义为:
<bean id="propertiesFactory" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location">            
           <value>/WEB-INF/classes/library.properties</value>
        </property>
    </bean>

propertiesFactory bean注入到控制器中:

@Autowired 
private Properties propertiesFactory;

并在控制器的一个方法中使用,如下:

if (adminPassword.equals(propertiesFactory.getProperty("adminPassword"))) {           

这一切都运行得很完美,除了以下的测试程序有一行:
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("library-servlet.xml");

会抛出一个BeanCreationException异常:
Injection of autowired dependencies failed

由于:
java.io.FileNotFoundException: class path resource [WEB-INF/classes/library.properties] cannot be opened because it does not exist

但是如果整个应用程序都可以看到属性文件,为什么这个程序不能呢?

library-servlet.xml 文件中有什么内容...??? - Abhishek Mishra
我在询问library-servlet.xml文件的内容。 - Abhishek Mishra
就像任何其他的DispatcherServlet一样,即JavaBean注册以及所有Spring和Hibernate配置数据。你有什么特别想知道的吗? - Mr Morgan
1个回答

7
在 WEB-INF/classes 文件夹中的所有内容都被添加到类路径的根目录中。因此,您只需简单地引用您的资源即可。
library.properties

或者更好的是
classpath:library.properties

in

<property name="location">            
    <value>classpath:library.properties</value>
</property>

您可能会发现运行以下命令很有用:

System.out.println(System.getProperty("java.class.path"));

并查看作为类路径条目使用的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接