好的,我已经找到了真正的问题和解决方案。
首先,应用程序使用了正确的csv文件路径,但是在使用可执行jar时,还有另一个问题。
在我开始讨论可执行jar之前,我使用以下解决方案来获取CSV文件(问题是getFile()):
final List<String> resourceLines = FileReadUtils.readLines(specialisationResource.getFile());
for (final String line : resourceLines) {
data.add(getNewTransientSpecialisation(line));
}
但是在可执行的jar中,我无法将资源用作文件,我需要将其用作流,请参见上面提供的链接。所以我需要更改代码。如果您更喜欢使用本机Java,则可以执行以下操作:
final InputStream inputStream = specialisationResource.getInputStream();
final BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = bufferedReader.readLine()) != null) {
data.add(getNewTransientSpecialisation(line));
}
我更喜欢使用框架并使用如下所示的apache commons:
final List<String> resourceLines = IoUtils.readLines(specialisationResource.getInputStream());
for (final String line : resourceLines) {
data.add(getNewTransientSpecialisation(line));
}
因此,请记住,不要使用File()获取资源,请始终使用流来避免从一开始就出现该问题:-)
希望能对某人有所帮助。