将CSV用于jar文件中的类

时间:2018-02-14 16:02:24

标签: java jar java-8 apache-commons-csv

我正在创建一个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的任何建议?

0 个答案:

没有答案