我有一個Eclipse項目,其中我將庫「OpenCSV」作爲外部JAR導入。圖書館現在顯示在我的項目「參考圖書館」下。在Eclipse中導入庫
然而,當我打電話:
CSVReader reader = new CSVReader(new FileReader(csvPath));
Eclipse中拋出一個錯誤,指出構造CSVReader沒有定義。 csvPath是String類型的。
有什麼想法?
編輯:截圖
我有一個Eclipse項目,其中我將庫「OpenCSV」作爲外部JAR導入。圖書館現在顯示在我的項目「參考圖書館」下。在Eclipse中導入庫
然而,當我打電話:
CSVReader reader = new CSVReader(new FileReader(csvPath));
Eclipse中拋出一個錯誤,指出構造CSVReader沒有定義。 csvPath是String類型的。
有什麼想法?
編輯:截圖
我可能是錯了(我不使用這個庫,不知道它的包名的歷史),但它看起來像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));
您需要添加相關的JAR在項目的構建路徑,以便把它建成。
Java項目(右鍵) - >屬性 - > Java構建路徑 - >庫 - >添加JAR文件/添加外部JAR
是的,這就是我所做的... – MrD 2014-09-01 12:39:24
你必須嘗試和捕捉FileNotFoundException異常並查看下面的代碼。
public FileReader(String fileName) throws FileNotFoundException {
super(new FileInputStream(fileName));
}
你可以修改它像下面
try {
CSVReader reader = new CSVReader(new FileReader(csvPath));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
你呼籲自己的類的構造函數使用哪一個類CSVReader
不存在!重命名您的班級並創建au.com.bytecode.opencsv
的新實例,或者刪除相應的行,確保您導入au.com.bytecode.opencsv.CSVReader
,然後重新創建該行。
或者 - 但我不確定這是否是你想要的東西 - 你可以讓你CSVReader
(最佳另一個名字),延長au.com.bytecode.opencsv.CSVReader
並覆蓋各自的構造函數。
我想你的問題是由於你使用了自動完成的CSVReader
而導致的,並沒有從正確的包中選擇類。
@DarioP這就是原因。 – snow8261 2014-09-01 13:00:14
My full solution is listed here,嘗試用CSVParser instead的工作,這是可以從Apache共享和更容易的工程!
你導入了什麼版本的lib?你確定該構造函數在該版本中存在嗎? – 2014-09-01 12:36:36
嗨@tobias_k是的,你說得對,顯然是最新的更新具有構造採取了「讀者」,但java的告訴我,這是不可能的,以便發起這種類型.. – MrD 2014-09-01 12:38:49
這是因爲'Reader'是一個抽象類。然而,'FileReader''就是'Reader',所以這不應該是個問題。也許在班級路徑中有另一個同名的班級? – 2014-09-01 12:40:21