2012-07-25 128 views
1

我有一個非常奇怪的問題與Tomcat,我似乎無法修復。我的問題是,Tomcat似乎將Tomcat文件夾(C:/ Program Files/Apache Software Foundation/Tomcat 6)視爲類路徑。當我將我的JAVA_OPTS設置爲引用我的屬性文件時,此問題即生效。作爲類路徑的Tomcat文件夾?

-Ddoiadmin.properties.file=doiadmin.properties 

我的屬性在我的類路徑文件(WEB-INF/classes中),但是當我啓動Tomcat,我得到的錯誤:

com.XXXXX.commons.servicecore.ServiceConfigurationException: Could not find main properties file (directly or on classpath): [doiadmin.properties] 

讓應用程序正常啓動的唯一方法是將屬性文件放在Tomcat文件夾中。這很煩人,而且從長遠來看不是我想要做的。

我搜索了互聯網,並問幾個人無濟於事。有沒有人有什麼建議?

感謝所有幫助 -Tim

+0

你是否使用Windows安裝程序安裝?如果是這樣,請檢查服務設置(它應該已經安裝了控制面板)。嘗試使用從startup.bat運行的ZIP版本,看看是否有效。您可能還需要檢查您的系統環境變量,這可能會導致問題。 – Robert 2012-07-25 13:45:49

+0

感謝您的輸入。我正在使用Windows安裝程序,但我嘗試了拉鍊,並得到了同樣的錯誤。我還補充說: -Ddoiadmin.properties.file = doiadmin.properties 我的系統屬性無濟於事。 – user1472409 2012-07-25 14:13:43

+0

我不確定哪些類導致了這種情況,但它們是在你的webapp的jar或classes文件夾中嗎?他們不在tomcat/classes目錄下嗎? – Robert 2012-07-25 14:16:47

回答

1

如果我理解正確,我這樣做:

在你web.xml中有以下內容:

<env-entry> 
    <env-entry-name>RootPathPropertyName</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>uk.co.foo.project.path</env-entry-value> 
</env-entry> 

<env-entry> 
    <env-entry-name>RootPathPropertyValue</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>d:/foo/bar</env-entry-value> 
</env-entry> 

在您背景下成立一個PlaceHolderConfigurer如下:

<!-- Properties Configuration --> 
<bean id="propertyConfigurer" 
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="order" value="1"/> 
    <property name="locations"> 
    <list> 
     <value>file:${uk.co.foo.project.path}/config/foo.properties</value> 
    </list> 
    </property> 
</bean> 

在你的tomcat配置中,你可以在文件/conf/Catalina/localhost/foo.xml中覆蓋默認位置:

<Context path="foo" > 
<Environment name="RootPathPropertyValue" value="c:/foo/bar" type="java.lang.String" override="false"/> 
</Context>