无法打开ServletContext资源
这与一个年龄较大的人非常相似,但是解决方案对我不起作用。
我有一个WAR包。
在 web.xml
<context-param> <param-name>contextConfigLocation</param-name>
<param-value>classpath:application-context.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
在 application-context.xml
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location">
<value>classpath:social.properties</value>
</property>
</bean>
但是得到这个:
org.springframework.beans.factory.BeanInitializationException:无法加载属性。嵌套的异常是java.io.FileNotFoundException:无法打开ServletContext资源[/social.properties]
我查了WAR包- .xml
和.properties
文件都在/WEB-INF/classes
.properties
文件是在src/main/resources
和.xml
中src/main/java
(默认包两者)和Maven传输他们(我认为)在正确的默认包WEB-
INF/classes
有谁知道我为什么能得到这个例外?谢谢。
编辑:我只是想补充一下JUnit测试能够正常进行(我的意思是他们加载了他们应该从中进行的测试social.properties
),但是在运行应用程序时,它会忽略我的classpath:
前缀
回答:
不要使用classpath。这可能会导致使用不同的ClassLoader(容器与应用程序)出现问题。WEB-INF始终是更好的选择。
<context-param> <param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring-config.xml</param-value>
</context-param>
和
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location">
<value>/WEB-INF/social.properties</value>
</property>
</bean>
以上是 无法打开ServletContext资源 的全部内容, 来源链接: utcz.com/qa/404686.html