我正在尝试使用openCSV 4.1从bean列表中编写CSV。但是,每当我运行程序时,我得到CsvBeanIntrospectionException,然后是类'TestObject'上的NoSuchMethodException:未知属性'fieldx'
我已成功使用阅读器副本将CSV读取到bean列表中。
这是我的对象'TestObject'的代码:
public class Project {
public static void main(String[] args) {
TestObject t1 = new TestObject(1,2);
TestObject t2 = new TestObject(3,4);
List<TestObject> testList = new ArrayList<>();
testList.add(t1);
testList.add(t2);
Prep prep = new Prep();
try {
prep.writeCSV(testList);
} catch (IOException | CsvDataTypeMismatchException | CsvRequiredFieldEmptyException ex) {
ex.printStackTrace();
}
}
}
import com.opencsv.bean.*;
import com.opencsv.exceptions.CsvDataTypeMismatchException;
import com.opencsv.exceptions.CsvRequiredFieldEmptyException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.List;
public class Prep {
public void writeCSV(List<TestObject> t) throws IOException,
CsvDataTypeMismatchException,
CsvRequiredFieldEmptyException {
Writer writer = new FileWriter("testfile.csv");
StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();
beanToCsv.write(t);
writer.close();
}
}
剩下的就是这里。
C:\Users\{username}\.m2
答案 0 :(得分:2)
我遇到了类似的错误,请尝试为要转换为 CSV 的类添加默认构造函数,它对我有用。
答案 1 :(得分:1)
通过消除,我发现getter方法的名称必须与属性的名称相匹配。通过下面的更正,现在我可以从对象列表中写入CSV。
SiliCompressor
答案 2 :(得分:1)
就我而言,构造函数未声明为公共!
答案 3 :(得分:0)
我的情况是因为我正在测试 lib,所以我创建了一个非公共 bean 文件,这是问题,因此请确保 bean 文件是公共类文件,因为 lib 使用 CGLIB
代理类所以它需要访问它
答案 4 :(得分:0)
就我而言,这是因为 final 关键字:
@Data
@Accessors(chain = true)
public class CsvFile {
@CsvBindByName(column = "ColumnOne")
private final String columnOne;
}
删除 final
关键字后工作正常。