Картография Apache Commons CSV не найдена - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь прочитать файл CSV с определенными заголовками в объект Java с помощью Apache Commons CSV.Однако, когда я запускаю код, я получаю следующее исключение:

Exception in thread "main" java.lang.IllegalArgumentException: Mapping for Color not found, expected one of [Color, Name, Price, House Cost, Rent, 1 House, 2 Houses, 3 Houses, 4 Houses, Hotel, Mortgage]
at org.apache.commons.csv.CSVRecord.get(CSVRecord.java:102)
at GameBoard.<init>(GameBoard.java:25)
at Game.main(Game.java:3)

Может кто-нибудь объяснить, откуда исходит исключение?Мне кажется, что Apache Commons как-то не соответствует моему входу в столбец.Что-то не так с моей стороны или что-то еще сломано?Вот мой фрагмент кода:

Reader in;
    Iterable<CSVRecord> records = null;
    try {
        in = new FileReader(new File(Objects.requireNonNull(getClass().getClassLoader().getResource("Properties.csv")).getFile()));
        records = CSVFormat.EXCEL.withFirstRecordAsHeader().parse(in);
    } catch (IOException | NullPointerException e) {
        e.printStackTrace();
        System.exit(1);
    }
    for (CSVRecord record :
            records) {
        spaces.add(new Property(
                record.get("Color"),
                record.get("Name"),
                Integer.parseInt(record.get("Price")),

А вот мои заголовки csv (извините, один был обрезан, но это не главное): csv headers

Спасибо!

1 Ответ

0 голосов
/ 31 мая 2019

У меня такое же странное исключение.На самом деле он сказал «Ожидается один из ...», а затем перечислил поле, которое, как он сказал, он не может найти - как в вашем случае.

Причина была в том, что я установил неправильный CSVFormat:

CSVFormat csvFormat = CSVFormat.newFormat(';');

Это означало, что мой код пытался разделить поля на точки с запятой в файле, который на самом деле имел запятую разделители.

Как только я использовалПО УМОЛЧАНИЮ CSVFormat, все начало работать.

CSVFormat csvFormat = CSVFormat.DEFAULT;

Поэтому ответ таков: вероятно, вы должны правильно установить CSVFormat для своего файла.

...