Springboot 打成 jar 包后,找不到 resource 下的文件,路径出现感叹号
错误:
file:/opt/xxx/AppXXX.jar!/BOOT-INF/classes!/static/template/Word.docx (No such file or directory)
场景:
本地开发时,好好的。。
打成jar包发到线上,报错找不到resource下的模板文件了。。。
出现错误的代码:
String path = ClassUtils.getDefaultClassLoader().getResource("static/Word.docx").getPath();
FileInputStream fileInputStream = new FileInputStream(path);
解决:
InputStream fileInputStream = ClassUtils.getDefaultClassLoader().getResourceAsStream("static/Word.docx");
原因:
本地开发时,项目环境是文件夹,确实可以用 getResource 拿到 文件夹中的文件和路径
打成jar包启动后,jar是个文件不再是文件夹,所以想拿到资源文件必须用流的方式,getResourceAsStream