问题描述:
springboot 项目在本地运行时,资源文件可通过spring 的ResourceUtil.getFile 直接获取,但是打成jar包后运行时无法访问本地文件。
问题分析:
由于打成jar后,调用ResourceUtil.getFile读取文件会将文件路径自动转换成jar:file:/D:/xxx/jsmp.jar!/BOOT-INF/classes!/xx.xx格式,由于在windows中,无法直接访问未解压的文件,所以导致文件无法读取。
解决办法:
通过classLoader加载文件流读取,如:org.springframework.util.ClassUtils.class.getClassLoader().getResourceAsStream(filePath)
其中filepath为相对于classpath的路径,不能以/开头。
网友评论