我正在创建一个Jar文件来存储我的一些其他应用程序的公共代码。在其中一个类中,我想基本上将csv文件加载到对象中,并允许使用jar的应用程序访问此对象。我使用的是Java 8和Apache Commons-csv。
以下是我目前的情况:
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
</compilation>
这可以在eclipse中运行并通过所有测试。但是,在将其编译为jar并尝试在其他项目中使用它之后,我得到了指定的异常&#34;无法加载csv&#34;基于FileNotFoundException。
我已经找到了这个主题,并且许多人已经说要将资源作为流来获取。不幸的是,谷歌搜索&#34; Java将csv导入为流&#34;,但是这提供了一堆用Java 8流解析而不是使用CSV库的手动csv。
我也尝试过相同的结果(在eclipse中传递所有测试,但导入到其他项目时文件没有加载):
public class MyServices {
public static final String CSV_SRC = "src/main/resources/MyCSV.csv";
private final List<MyCSVObj> allObjectsFromCSV;
public MyServices() {
this.allObjectsFromCSV = importMyCSV();
}
private List<MyCSVObj> importMyCSV() {
try {
Reader in = new FileReader(CSV_SRC);
Iterable<CSVRecord> records = CSVFormat.EXCEL.withHeader().parse(in);
List<MyCSVObj> ret = new ArrayList<>();
for (CSVRecord record : records) {
... // Get all fields
// Add fields to list
}
return ret;
} catch (Exception e) {
LOGGER.error("Could not load csv", e);
}
return new ArrayList<>();
}
...
}
和这个
FileInputStream is = new FileInputStream(CSV_SRC);
Reader in = new InputStreamReader(is);
Iterable<CSVRecord> records = CSVFormat.EXCEL.withHeader().parse(in);
有关如何解决FileNotFoundException的任何建议?