2014-09-01 3 views
2

У меня есть проект Eclipse, где я импортировал библиотеку OpenCSV в качестве внешнего JAR. Теперь библиотека показана в моем проекте в разделе «ссылки библиотек».Импорт библиотеки в Eclipse

Однако, когда я называю:

CSVReader reader = new CSVReader(new FileReader(csvPath)); 

Eclipse, выдает ошибку о том, что конструктор CSVReader не определен. csvPath имеет тип String.

Любые мысли?

EDIT: Скриншот

My workspace

+0

Какую версию lib вы импортировали? Вы уверены, что конструктор присутствует в этой версии? –

+0

Привет @tobias_k да, вы правы, по-видимому, последнее обновление имеет конструктор, берущий «Reader», но java говорит мне, что инициировать такой тип невозможно. – MrD

+0

Это потому, что 'Читатель' является абстрактным классом. Однако 'FileReader' _is_ a' Reader', поэтому это не должно быть проблемой. Может быть, есть еще один класс с тем же именем на вашем пути к классу? –

ответ

5

Я могу ошибаться (я не использую эту библиотеку и не знают историю своих имен пакетов), но это выглядит как autoEvoSuite это ваш собственный пакет.

Если это так то есть имя класса конфликт (на самом деле нет никакого конфликта, вы просто используете неверный класс), так как ваш класс также называют CSVReader так внутри метода readCVS вы не вызывая конструктор au.com.bytecode.opencsv.CSVReader, но конструктор своего класса autoEvoSuite.CSVReader, и так как ваш класс не имеет

public CSVReader(FileReade reader){...} 

конструктора, компилятор сообщает вам об этой проблеме.

Чтобы решить эту проблему, рассмотреть вопрос о переименовании класса, или быть явными и сказать, какой класс именно вы хотите использовать, написав его полное имя-пакета, как

au.com.bytecode.opencsv.CSVReader reader = new au.com.bytecode.opencsv.CSVReader(new FileReader(csvPath)); 
+0

Да, конечно ... Должен был увидеть это сам, но спасибо вам большое! :) Починил это! – MrD

+0

@DarioP Добро пожаловать :) – Pshemo

0

Вам нужно добавить соответствующий файл JAR в путь сборки проекта для того, чтобы он построил.

Ваш Java Project (Щелчок правой кнопкой мыши) -> Свойства -> Java Build Path -> Библиотеки -> Добавить JARs/Добавить внешние файлы JAR

enter image description here

+0

Да, вот что я сделал ... – MrD

2

вы должны попытаться поймать FileNotFoundException и см. код ниже.

public FileReader(String fileName) throws FileNotFoundException { 
    super(new FileInputStream(fileName)); 
} 

вы можете изменить его, как следующий

try { 
     CSVReader reader = new CSVReader(new FileReader(csvPath)); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
+0

Можете ли вы привести пример, пожалуйста? – MrD

+0

вы можете выбросить IOException в подпись metehod, а также – snow8261

2

Вы вызываете конструктор для вашего собственного класса CSVReader это не существует! Переименуйте свой класс и создайте новый экземпляр au.com.bytecode.opencsv или удалите соответствующую строку, убедитесь, что вы импортируете au.com.bytecode.opencsv.CSVReader и заново создаете строку.

Альтернативно - но я не уверен, что это то, что вы хотите - вы можете сделать свой CSVReader (оптимально под другим именем), расширить au.com.bytecode.opencsv.CSVReader и переопределить соответствующий конструктор.

Я думаю, ваша проблема была вызвана, когда вы использовали автозаполнение для CSVReader и не выбрали класс из нужного пакета?

+0

@DarioP это причина. – snow8261

Смежные вопросы