2016-02-06 88 views
2

我遇到一個問題,Maven和opencsv的Maven找不到opencsv CSV解析器

我試圖使用csvparser如下:

import java.io.IOException; 
import au.com.bytecode.opencsv.CSVParser; 
import org.apache.hadoop.io.*; 
import org.apache.hadoop.mapreduce.Mapper; 

public class FlightsByCarrierMapper extends 
       Mapper<LongWritable, Text, Text, IntWritable> { 
    @Override 
    protected void map(LongWritable key, Text value, Context context) 
      throws IOException, InterruptedException { 

     if (key.get() > 0) { 
      String[] lines = new 
     CSVParser().parseLine(value.toString()); 
      context.write(new Text(lines[8]), new IntWritable(1)); 
     } 
    } 
} 

我已經添加了opencsv依賴,並能使用csvreader沒有問題。無論何時我嘗試編譯代碼,csvparser都無法解析並拋出錯誤。

Maven然後會引發以下錯誤。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project FlightsByCarrier: Compilation failure: Compilation failure: 
[ERROR] /root/workspace/FlightsByCarrier/src/main/java/com/root/hadoop/FlightsByCarrier/FlightsByCarrierMapper.java:[6,30] error: cannot find symbol 
[ERROR] package au.com.bytecode.opencsv 
[ERROR] /root/workspace/FlightsByCarrier/src/main/java/com/root/hadoop/FlightsByCarrier/FlightsByCarrierMapper.java:[18,2] error: cannot find symbol 

的依賴貌似現在這種權利:

<dependency> 
    <groupId>net.sf.opencsv</groupId> 
    <artifactId>opencsv</artifactId> 
    <version>1.8</version> 
</dependency> 

回答

1

看來類CSVParseropencsv 1.8存在。本課程介紹於opencsv 2.1

因此,您至少需要將依賴關係更新至版本2.1。

<dependency> 
    <groupId>net.sf.opencsv</groupId> 
    <artifactId>opencsv</artifactId> 
    <version>2.1</version> 
</dependency> 

注意,開始3.X分支,神器搬遷至com.opencsv:opencsv協調。這將是最好使用最新版本的庫:

<dependency> 
    <groupId>com.opencsv</groupId> 
    <artifactId>opencsv</artifactId> 
    <version>3.7</version> 
</dependency> 

您還需要更新您的進口import com.opencsv

+0

感謝您排除疑問。 :) – user2004685

+0

當我將最後一個依賴項添加到我的pom.xml文件時,CSVReader和CSVParser都不存在。 – Nique

+0

@Nique哦,這很奇怪。我剛剛通過添加該依賴關係進行了重新測試,並且我有'com.opencsv.CSVParser'和'com.opencsv.CSVReader'類。你確定下載沒有被破壞? – Tunaki