2012-07-25 129 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>