无法打开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.xmlsrc/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

回到顶部