You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Eclipse中Tomcat启动项目误读取src/test/resources下application.properties

问题解决方案

根因说明

Eclipse中Maven项目默认将src/test/resources标记为测试类路径资源,即使手动移除了普通classpath条目,Maven插件的生命周期绑定、WTP部署组件的默认配置仍可能将测试资源同步到Tomcat部署目录的类路径下,测试资源的类路径优先级高于生产资源,导致配置加载错乱。

分步操作方案

  • 第一步:修正Eclipse项目部署配置
    右键项目 → 选择【Properties】 → 进入【Deployment Assembly】配置页,删除列表中src/test/resources对应的条目,仅保留src/main/java、src/main/resources、Maven Dependencies等生产部署需要的条目,保存配置后右键项目 → 【Maven】 → 【Update Project】,勾选「Update project configuration from pom.xml」确认更新。

  • 第二步:显式指定Spring配置文件加载路径
    你所使用的Spring 4.3版本默认会扫描所有类路径下的匹配配置文件,可通过显式指定加载路径锁定生产配置:
    注解配置示例:

    @PropertySource("classpath:/application.properties")
    

    XML配置示例:

    <context:property-placeholder location="classpath:/application.properties" ignore-unresolvable="true" />
    

    此处使用classpath:前缀而非classpath*:,只会读取主类路径下的第一个匹配配置,不会扫描测试类路径的资源。

  • 第三步:调整Maven资源配置区分生产/测试资源
    在pom.xml的build节点下显式声明资源目录,从构建层面隔离两类资源:

    <build>
      <resources>
        <resource>
          <directory>src/main/resources</directory>
          <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
          </includes>
        </resource>
      </resources>
      <testResources>
        <testResource>
          <directory>src/test/resources</directory>
        </testResource>
      </testResources>
    </build>
    

    配置完成后执行一次mvn clean install,再更新Eclipse Maven项目配置。

  • 第四步:清理缓存后重新部署
    停止当前运行的Tomcat实例,右键Tomcat服务器选择【Clean】清除部署缓存,进入Tomcat的wtpwebapps目录删除对应项目的部署文件夹,重启Tomcat重新部署即可。

内容的提问来源于stack exchange,提问作者Shubham Rathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:15:03