• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

解决springboot项目找不到resources目录下的资源问题

springboot 搞代码 4年前 (2022-01-05) 72次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了解决springboot项目找不到resources目录下的资源问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

springboot项目找不到resources目录下的资源

问题描述:

将老的mvc项目转为boot后找不到resources文件夹下的资源文件

原因:

war包采用的是tomcat部署,tomcat会对war包进行解压,以及目录的一些操作。而springboot使用jar包部署,服务器中是不存在相关目录的。

环境:

springboot 2.2.2RELAESE

主要的API:

 ClassPathResource classPathRe<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码网</strong>source = new ClassPathResource(filePath); InputStream inputStream = classPathResource.getInputStream(); 

工具类

 import java.io.File; import java.io.InputStream; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.springframework.core.io.ClassPathResource; public class FileUtil { public File getResourceFile(String filePath) throws Exception{ try { ClassPathResource classPathResource = new ClassPathResource(filePath); InputStream inputStream = classPathResource.getInputStream(); //生成目标文件 File somethingFile = File.createTempFile("DailyReportTemplate", ".xls"); try { FileUtils.copyInputStreamToFile(inputStream, somethingFile); } finally { IOUtils.closeQuietly(inputStream); } return somethingFile; } catch (Exception e) { throw new Exception(e); } } }

运行jar文件时,ClassPathResource无法读取到资源文件的问题

问题场景:

在idea中运行,一切正常,资源文件都可以访问到,但打成jar包后,使用java -jar的形式去启动,就访问不到resource下的资源文件了

网上搜了很多文章,但试了后都不好使

我的路径是配置在properties文件中,然后读取配置文件中的值,然后拼接文件路径,再使用ClassPathResource去读取的

开始时我配置文件中是这样写的:

 #路径中注意首尾不要有空格 service.config-root=static/service/ service.config-name=AppConfig.json

程序代码读出后拼接:

 @Value("${service.config-root}") private String configRoot; @Value("${service.config-name}") private String configName; .....省略无关code..... public String getPath(){ String configPath = this.configRoot + this.configName; return configPath; }

但运行jar后,直接FileNotFoundException了

解决:

方案1:

主要是斜杠”\”和反斜杠”/”的问题,配置文件修改如下:

 #路径中注意首尾不要有空格 service.config-root=static\\tileservice\\ service.config-name=AppConfig.json

方案2:

使用”File.spearator”拼接路径

 service.config-root=static service.config-name=AppConfig.json @Value("${service.config-root}") private String configRoot; @Value("${service.config-name}") private String configName; .....省略无关code..... public static  T readJsonFromClassPath(Type type) throws IOException { //这里使用File.spearator拼接 ClassPathResource resource = new ClassPathResource(this.configRoot + File.spearator  + this.configName); if (resource.exists()) { return JSON.parseObject(resource.getInputStream(), StandardCharsets.UTF_8, type, ..... } }

搞定!

以上就是解决springboot项目找不到resources目录下的资源问题的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:解决springboot项目找不到resources目录下的资源问题

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址