2012-11-02 48 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