Spring加载Tomcat conf下.properties文件因路径多斜杠报错及解决
解决Tomcat conf目录下application.properties的FileNotFoundException问题
我刚踩过这个一模一样的坑:明明把application.properties放在了Tomcat的conf目录里,启动项目却一直抛出FileNotFoundException: Could not open ServletContext resource异常,反复确认文件确实存在,最后才揪出问题——Spring自动拼接的路径开头多了个斜杠,变成了/D:/...../conf/app.properties,这种带前置斜杠的绝对路径格式完全无效,导致Spring找不到文件。
问题根源
Spring默认会从Servlet上下文的资源路径查找配置文件,当你试图指向Tomcat conf目录的绝对路径时,它会错误地在路径头部添加斜杠,破坏了合法的文件系统路径格式,自然找不到目标文件。
解决办法
只需要在配置location时加上file:前缀,并结合Tomcat的环境变量${catalina.base}动态指定路径即可,具体配置示例如下:
如果是注解配置:
@PropertySource(value = "file:${catalina.base}/conf/application.properties")
如果是XML配置:
<context:property-placeholder location="file:${catalina.base}/conf/application.properties"/>
这个配置的核心逻辑:
file:前缀明确告诉Spring要从本地文件系统读取配置,而非从Web应用的内部资源目录查找${catalina.base}会自动获取Tomcat的根目录,不管Tomcat部署在哪个路径下,都能精准定位到conf目录里的配置文件
内容的提问来源于stack exchange,提问作者user435421
相关产品推荐
相关产品推荐

