2015-03-23 8 views
0

Я пытаюсь разобрать простой файл csv с некоторыми пользователями, используя opencsv 3.3, и поместить его в bean-компонент, но я получаю исключение класса, не найденное при запуске кода. Файл Person.class, который я использую для считываемых объектов, приведен ниже.OpenCSV Parse CSV с заголовком в список

public class Person { 
    private String firstname; 
    private String lastname; 
    private String email; 
    private String type; 

    /*public Person() {} 
    public Person (String firstname, String lastname, String email, String type) { 
     this.firstname = firstname; 
     this.lastname = lastname; 
     this.email = email; 
     this.type = type; 
    }*/ 

    //set all the variables for the person 
    //set the first name 
    public String getFirstName() { 
     return firstname; 
    } 
    public void setFirstName(String firstname) { 
     this.firstname = firstname; 
    } 

    //set the last name 
    public String getLastName() { 
     return lastname; 
    } 
    public void setLastName (String lastname) { 
     this.lastname = lastname; 
    } 

    //set the email address of the user 
    public String setEmail() { 
     return email; 
    } 
    public void getEmail(String email) { 
     this.email = email; 
    } 

    //set the type for the user 
    public String setType() { 
     return type; 
    } 
    public void getType (String type) { 
     this.type = type; 
    } 

    @Override 
    public String toString() { 
     return "User [firstname=" + firstname + ", lastname=" + lastname + ", email=" + email + ", type=" + type + "]"; 
    } 
} 

Код для чтения csv приведен ниже.

String filename = "D:/Projects/deploy/resources/sample.csv"; 
try {   
    HeaderColumnNameTranslateMappingStrategy<Person> strategy = new HeaderColumnNameTranslateMappingStrategy<Person>(); 
    strategy.setType(Person.class); 
    Map<String, String> mapping = new HashMap<String, String>(); 
    mapping.put("firstname", "firstname"); 
    mapping.put("lastname", "lastname"); 
    mapping.put("email", "email"); 
    mapping.put("type", "type"); 
    strategy.setColumnMapping(mapping); 
    System.out.println("past the mapping"); 

    CSVReader reader = new CSVReader(new FileReader(filename)); 
    System.out.println("past the reader"); 

    CsvToBean<Person> csvbean = new CsvToBean<Person>(); 
    System.out.println("past the csvtobean"); 

    List<Person> csvusers = csvbean.parse(strategy, reader); 
    System.out.println(csvusers); 


} catch (Exception e) { 
    System.out.println("there was an exception in the main program:" + e); 
} 

Когда я запустил это, в нем говорится, что класса не найдено для отображения заголовка. Вы знаете, что это проблема с Person.class или с отображением? Любая помощь, которую вы можете предоставить, будет высоко оценена.

ответ

1

Если кто-то сталкивается с этим, код выше работает нормально. У меня не было apache commons lang3 в моем пути к классам, который был необходим для opencsv. Как только я добавил, все начинало работать так, как должно.

Thanks Nick