我在使用 maven 和 opencsv 时遇到了一个问题
我正在尝试按如下方式使用 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>
最佳答案
CSVParser
类似乎不存在于opencsv 1.8 中.此类介绍于 opencsv 2.1 .
因此,您至少需要将依赖项更新到 2.1 版。
<dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.1</version>
</dependency>
请注意,从 3.x 分支开始, Artifact 被重新定位到 com.opencsv:opencsv
协调。最好使用最新版本的库:
<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>3.7</version>
</dependency>
您还需要将导入更新为 import com.opencsv
。
关于java - Maven 找不到 opencsv csv 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35241482/