一、问题
如代码示例:获取Resource目录下static/playctrl_map_code.xlsx文件,获取文件流失败。
二、分析
- 在第二个分支处,classPathRecource.exists()返回了false
- 打断点跟进去可以看到在此处返回了Null
- IDEA按Alt+F8调用计算,尝试使用当前启动类的类加载器加载static/playctrl_map_code.xlsx,仍然返回null。
ZhjkServerApplication.class.getClassLoader().getResource("static/playctrl_map_code.xlsx")
- 尝试获取配置文件application.properties
ZhjkServerApplication.class.getClassLoader().getResource("application.properties")
-
可以看到获取配置文件成功,且获取的文件的路径是编译后的目录Target下
-
检查编译后的target目录,缺失了static路径,定位到问题原因:编译出现异常
三、解决
问题原因已经找到,是编译问题,那么首先我尝试IDEA重新编译,但很显然不会成功。
- 检查Pom.xml文件,发现resource默认配置被覆盖,而且缺失static目录的配置
-
由于之前已经放弃了使用filtering标签,Resources配置的意义已经不大,直接删除,重新编译
-
如果IDEA编译失败,建议使用Maven手动编译,clean清除target,install安装本地jar到本地仓库,compile编译。
mvn clean install compile
- 查看重新编译后的target,已经正常,重新运行,问题解决