我有一个Spring(maven)项目,我正在使用属性文件。此属性文件包含UI标签和消息。 在源代码属性文件位置是src / main / resources / message / ApplicationResources.properties 该项目的输出是WAR文件。 war中属性文件的位置是WEB-INF / classes / message / ApplicationResources.properties
我正在尝试使用此属性文件,如下所示
select distinct sirm.attribute
from store_item_received_material sirm
where sirm.store_item_id in (select si.id from store_item si where si.program_id = 9 and si.customer_id = 1 and si.date_processed is not null);
但每次我都低于异常
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<value>classpath*:message/ApplicationResources</value>
</property>
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<value>classpath*:message/ApplicationResources</value>
</property>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
</bean>
我做了很多谷歌并尝试了几乎所有选项,但没有任何对我有用。几乎没有选择
Caused by: org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: class path resource [message/ApplicationResources] cannot be opened because it does not exist
at org.springframework.beans.factory.config.PropertyResourceConfigurer.postProcessBeanFactory(PropertyResourceConfigurer.java:89)
答案 0 :(得分:1)
请尝试将您的配置更改为:
<property name="locations">
<list>
<value>classpath*:message/ApplicationMessages.properties</value>
</list>
</property>
或
<property name="location">
<value>classpath*:message/ApplicationMessages.properties</value>
</property>
答案 1 :(得分:0)
我遇到了一些类似的问题,最后让它指向资源文件名,而没有指定目录。我的示例使用了几个文件,但它几乎相同:
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames" value="classpath:applicationMessages,classpath:ValidationMessages"/>
</bean>
答案 2 :(得分:0)
如果您的ApplicationMessage.properties位于src / main / resources / message中,则必须使用
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<value>classpath*:/message/ApplicationResources</value>
</property>
</bean>
(小心/ message /)。
如果你不在类路径的开头使用/,则它会引用当前文件夹。使用/它是类路径的根文件夹(又名src / main / resources)
答案 3 :(得分:0)
最后我找到了解决方案。以下配置对我有用。
<context:property-placeholder location="classpath:message/ApplicationResources.properties"/>
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames" value="WEB-INF/classes/message/ApplicationResources"/>
</bean>