我在mac上运行eclipse并将我的tomcat文件夹放在/ Library / WebServer / apache-tomcat中。 我在eclipse中使用tomcat 7服务器并将其配置为使用原始的tomcat文件夹作为其工作目录。
问题是当在Spring 3.1中使用PropertyPlaceholderConfigurer bean并将该位置指定为“classpath:database.properties”时,当我启动tomcat时,它总是会给我一个FileNotFoundException。
我尝试将database.properties文件放在tomcat文件夹的lib,conf和root文件夹中。
我没有选择,请帮忙!
编辑1
尝试过Guido Simone的解决方案,但我得到了:
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanInitializationException: Could not load properties; nested exception is java.io.FileNotFoundException: /Library/WebServer/apache-tomcat-7.0.32/conf/database.properties (No such file or directory)
所以我终于看到Spring正在寻找文件的正确路径(这是正确的),文件在那里。还有其他建议吗?如果这可行,那么其他网络服务器是否也有这个catalina.base变量,或者这个tomcat是否具体?因为我后期需要平台独立性。
答案 0 :(得分:1)
出于这个原因,我倾向于不使用类路径URL。我讨厌必须跟踪为各种运行时环境配置类路径的确切方法。对于可能被编辑的属性文件(并且不能进入WAR文件),我建议使用以下内容:
<bean id="propertyPlaceholderConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="file:${catalina.base}/conf/database.properties"/>
现在,很明显该文件位于conf文件夹中,包含所有其他配置文件。
[更新]
catalina.base肯定是特定于Tomcat的,因此上面的确切XML不能移植到其他应用程序服务器。如果您决定继续使用file:
前缀,则需要做更多工作并定义自己的系统属性以指示所有配置文件的位置(file:${my.product.conf}/database.properties
)
您需要查看每个应用服务器的文档,以了解如何在启动时设置此属性。
不知道为什么你现在仍然在获得FileNotFoundException
完整的绝对路径。我唯一能想到的可能就是文件并不是你认为的地方:) :) :)抱歉。