2014-09-01 85 views
2

我有一個Eclipse項目,其中我將庫「OpenCSV」作爲外部JAR導入。圖書館現在顯示在我的項目「參考圖書館」下。在Eclipse中導入庫

然而,當我打電話:

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

Eclipse中拋出一個錯誤,指出構造CSVReader沒有定義。 csvPath是String類型的。

有什麼想法?

編輯:截圖

My workspace

+0

你導入了什麼版本的lib?你確定該構造函數在該版本中存在嗎? – 2014-09-01 12:36:36

+0

嗨@tobias_k是的,你說得對,顯然是最新的更新具有構造採取了「讀者」,但java的告訴我,這是不可能的,以便發起這種類型.. – MrD 2014-09-01 12:38:49

+0

這是因爲'Reader'是一個抽象類。然而,'FileReader''就是'Reader',所以這不應該是個問題。也許在班級路徑中有另一個同名的班級? – 2014-09-01 12:40:21

回答

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 2014-09-01 13:04:43

+0

@DarioP不客氣:) – Pshemo 2014-09-01 13:05:42

0

您需要添加相關的JAR在項目的構建路徑,以便把它建成。

Java項目(右鍵) - >屬性 - > Java構建路徑 - >庫 - >添加JAR文件/添加外部JAR

enter image description here

+0

是的,這就是我所做的... – MrD 2014-09-01 12:39:24

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 2014-09-01 12:50:46

+0

你可以在metehod簽名拋出IOException以及 – snow8261 2014-09-01 12:52:29

2

你呼籲自己的類的構造函數使用哪一個類CSVReader不存在!重命名您的班級並創建au.com.bytecode.opencsv的新實例,或者刪除相應的行,確保您導入au.com.bytecode.opencsv.CSVReader,然後重新創建該行。

或者 - 但我不確定這是否是你想要的東西 - 你可以讓你CSVReader(最佳另一個名字),延長au.com.bytecode.opencsv.CSVReader並覆蓋各自的構造函數。

我想你的問題是由於你使用了自動完成的CSVReader而導致的,並沒有從正確的包中選擇類。

+0

@DarioP這就是原因。 – snow8261 2014-09-01 13:00:14