Springboot:在构建和运行应用程序时如何从资源文件夹中读取文件

问题描述 投票:0回答:1
class path resource [static/locales.csv] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/lava-master.jar!/BOOT-INF/classes!/static/locales.csv"

我从资源文件夹中读取一个csv文件时遇到上述错误,当我在intellij中运行该应用程序并读取该文件时,它可以工作,但是当应用程序为bulid并通过docker运行时,它会抛出以上错误。我以前从资源中读取的代码

 List<LocaleDTO> localeDTOS = parseCsv(new ClassPathResource("static/locales.csv").getFile());
java spring-boot file classpath
1个回答
0
投票

按照您的错误消息,您的csv文件应位于以下位置:BOOT-INF / classes!/static/locales.csv

因此,您需要通过以下方法检查当前的工作目录:

System.out.println("Working dir: " + System.getProperty("user.dir"));

并更改相应的路径。例如,如果返回BOOT-INF / classes!/ java。您需要像这样更改程序:

 List<LocaleDTO> localeDTOS = parseCsv(new ClassPathResource("../static/locales.csv").getFile());

希望获得帮助!

© www.soinside.com 2019 - 2024. All rights reserved.