您好,登錄后才能下訂單哦!
小編給大家分享一下如何解決springboot項目找不到resources目錄下的資源問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
將老的mvc項目轉為boot后找不到resources文件夾下的資源文件
war包采用的是tomcat部署,tomcat會對war包進行解壓,以及目錄的一些操作。而springboot使用jar包部署,服務器中是不存在相關目錄的。
springboot 2.2.2RELAESE
ClassPathResource classPathResource = 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); } } }
在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了
主要是斜杠"\"和反斜杠"/"的問題,配置文件修改如下:
#路徑中注意首尾不要有空格 service.config-root=static\\tileservice\\ service.config-name=AppConfig.json
使用"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> 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目錄下的資源問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。