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

Spring @PropertySource报错:无法找到application.properties文件求助

解决Spring 3.2.16中application.properties找不到的问题

咱们一步步来排查这个FileNotFoundException问题,虽然你已经标记了Resources为资源根目录,但大概率是资源文件没被正确打包到classpath里,或者有一些Spring版本相关的小细节没注意到,下面是几个可能的排查方向:

1. 先确认资源文件的基础信息

  • 检查application.properties的位置和大小写:确保它确实在src/main/resources目录下,别把文件名写成Application.properties或者application.Properties——Windows系统不区分大小写,但如果后续部署到Linux/macOS环境,大小写错误会直接导致找不到文件。
  • 查看IntelliJ的项目结构:打开File → Project Structure → Modules → 你的模块 → Resources,确认src/main/resources被列为资源目录,且application.properties没有被排除在资源列表之外。

2. 检查构建工具的打包结果(关键!)

不管你用Maven还是Gradle,资源文件最终要被打包到classpath的根目录下才会被Spring找到,你可以这么做:

  • Maven用户:执行mvn clean compile命令,然后去项目的target/classes目录下看看,有没有application.properties文件。如果没有,说明Maven没有把资源文件复制过来,检查pom.xml里有没有修改默认的资源目录配置(默认是src/main/resources)。
  • Gradle用户:执行gradle clean build命令,然后查看build/classes/java/main目录,确认文件存在。如果没有,检查build.gradle的sourceSets配置,确保resources.srcDirs包含src/main/resources。
  • 如果你是直接用IntelliJ的Run按钮运行,也可以去out/production/resources目录下检查文件是否存在。

3. 注意Spring 3.2.x版本的@PropertySource特性限制

Spring 3.2.16的@PropertySource有个小局限:它不支持用classpath*:通配符加载单个文件(这个特性在Spring 4.x之后才得到完善),所以你之前试的classpath*:application.properties这种写法是无效的,回到最基础的配置就好:

@PropertySource(value = "classpath:application.properties")

4. 清理IntelliJ的缓存

有时候IDE的缓存会导致资源文件没有被同步到构建目录,试试这个操作:
File → Invalidate Caches... → 选择Invalidate and Restart,重启后重新构建项目,再运行试试。

5. 临时排查:用绝对路径测试

如果上面的方法都没解决,你可以先试试用本地绝对路径加载文件,比如:

@PropertySource(value = "file:/Users/yourname/project/src/main/resources/application.properties")

如果这样能正常加载,说明问题肯定出在classpath的打包环节,而不是代码配置的问题,再回头重点排查构建工具的配置。


内容的提问来源于stack exchange,提问作者Andrii Vdovychenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 03:43:17