我创建了一个spring boot应用程序,它读取excel文件,以便在前端显示数据,因此基本上它是持久数据的来源。我可以从我的日食中正确运行但是当我创建一个弹簧启动jar并从命令行运行它时它会失败,因为文件不包含在jar中。
我已尝试过两个位置src / main / resources和/ src / main / webapp / WEB-INF / external /但在这两种情况下都不包含这些文件。
代码:
private static final String FILE1 = "\\src\\main\\webapp\\WEB-INF\\external\\file1.csv";
private static final String FILE2 = "\\src\\main\\webapp\\WEB-INF\\external\\file2.csv";
private static String currentDirectory = Paths.get(".").toAbsolutePath().toString();
private static String completeAbsolutePath = currentDirectory
.substring(0, currentDir.length() - 1)
.replace("\\", "\\\\");
reader = new CSVReader(new FileReader(completePath + FILE1))
错误:
java.io.FileNotFoundException: C:\删除\ SRC \主\ web应用\ WEB-INF \外部\ File1.csv
有人可以帮忙吗?
答案 0 :(得分:1)
这里有两个问题:
src
文件夹下
而不是创建指定的资源文件夹并将其放在那里。
要做到这一点,你应该创建一个名为" resources"在同一个
等级为" src"右键单击该文件夹,选择"将目录标记为 - >
资源根" 您指的是具有相对路径的文件。这可能有效 eclipse但是当你把它作为一个罐子运行时,路径会被改变 相对路径不再正确。
要使用此类资源,您应使用ClassLoader
API
ClassLoader.getResourceAsStream(String name)
获取您的资源。
它应该类似于以下内容:
reader = new CSVReader(new InputstreamReader(ClassLoader.getResourceAsStream(completePath +
FILE1)));