Spring Boot多模块项目在IntelliJ IDEA运行时图片路径错误无法加载如何解决
问题原因
该问题是IntelliJ IDEA和STS的默认运行*工作目录(Working Directory)*规则不同导致的:STS默认以启动类所在的模块根目录作为工作目录,IDEA默认以整个项目的根目录作为工作目录,因此代码中使用相对路径存储文件时,生成的文件路径和预期不符。
解决方案
方法1:修改IDEA运行配置(无需改代码,最快生效)
- 打开IDEA右上角运行配置的下拉菜单,选择
Edit Configurations - 找到你运行ShopmeBackEnd模块对应的Spring Boot启动项
- 定位到
Working directory配置项 - 直接填入宏值
$MODULE_WORKING_DIR$,或者手动选择路径到ShopmeProject/ShopmeWebParent/ShopmeBackEnd - 保存配置后重启项目即可,此时运行逻辑和STS完全一致,文件会生成到目标路径
方法2:代码层固定路径(全IDE兼容,适合团队协作)
如果要避免换IDE、换设备时重复配置,可以直接修改代码逻辑固定存储路径:
- 在
application.properties或application.yml中添加上传路径配置:
file.upload-path=./ShopmeWebParent/ShopmeBackEnd/user-photo
- 代码中注入配置值使用,不要硬写相对路径:
@Value("${file.upload-path}") private String uploadPath;
- 同步修改静态资源映射规则,保证浏览器可以正常加载图片:
@Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/user-photo/**") .addResourceLocations("file:" + uploadPath + "/"); }
验证步骤
重启项目后上传一张测试图片,确认文件生成在ShopmeProject\ShopmeWebParent\ShopmeBackEnd\user-photo路径下,再访问浏览器对应的图片链接确认可以正常显示即可。
内容的提问来源于stack exchange,提问作者Đức Long
相关产品推荐
相关产品推荐

