好的,我已经找到了真正的问题和解决方案。
首先,应用程序使用了正确的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()获取资源,请始终使用流来避免从一开始就出现该问题:-)
希望能对某人有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)