由于项目中要用到excel导出,所以使用了模版导出,就在resources下新增了doc/temp.xls文件,在本地调试还很好,打成jar正式部署时就出现:
java.io.FileNotFoundException: class path resource [doc/temp.xls]
通过网络资料查找就找到了原因,问题出在获取资源路径的方法,之前我用的:
ResourceUtils.getFile(ResourceUtils.CLASSPATH_URL_PREFIX + "doc/temp.xls").getPath();
这行代码在本地是起作用的,正式打成jar就会错误,最终改为以下方法获取就可以正常了。
ClassPathResource classPathResource = new ClassPathResource("doc/temp.xls");
classPathResource.getPath();
使用ClassPathResource 就可以正常获取到了,在这里记录一下,希望能帮到有遇到同样问题的小伙伴。
总结:
不管是用ClassPathResource还是ClassLoader,读取jar里面的文件,我们只能用流去读取,不能用file,文件肯定要牵扯路径。