2012-11-02 47 views
0

我在mac上运行eclipse,并在/ Library/WebServer/apache-tomcat中拥有我的tomcat文件夹。 我在eclipse中使用tomcat 7服务器,并将其配置为使用原始的tomcat文件夹作为其工作目录。集成在eclipse classpath中的Tomcat 7问题

问题是,当在Spring 3.1中使用PropertyPlaceholderConfigurer bean并将位置指定为“classpath:database.properties”时,当我启动tomcat时,它总会给我一个FileNotFoundException。

我已经尝试将database.properties文件放在tomcat文件夹的lib,conf和根文件夹中。

我没有选择,请帮忙!

编辑1

试图圭多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) 

所以,我终于看到了春天正在寻找的文件(这是正确的)的完整路径和文件身体在那里。还有其他建议吗?如果这是行得通的,其他web服务器是否也有这个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现在完整的绝对路径被拼写出来。我能想到的唯一的事情可能是文件不是真的在你认为的地方:) :) :)对不起。

+0

看来,mac OSX隐藏文件的文件扩展名,当我在终端中查看文件时,它被命名为database.properties.rtf 所以现在classpath:database.properties实际上工作! – lugte098