Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用OpenCSV将JavaBeans写入CSV_Java_Javabeans_Opencsv - Fatal编程技术网

Can';t使用OpenCSV将JavaBeans写入CSV

Can';t使用OpenCSV将JavaBeans写入CSV,java,javabeans,opencsv,Java,Javabeans,Opencsv,我正在尝试使用OpenCSV将一些数据写入CSV文件。但是,当我尝试存储数据时,会得到一个CsvBeanIntrospectionException,后面跟着一个NoSuchMethodException:class'class SubscriberBean'上的未知属性'Email'。 下面是我的JavaBean类的代码: import com.opencsv.bean.CsvBindByName; import java.io.Serializable; public class Sub

我正在尝试使用OpenCSV将一些数据写入CSV文件。但是,当我尝试存储数据时,会得到一个
CsvBeanIntrospectionException
,后面跟着一个
NoSuchMethodException:class'class SubscriberBean'上的未知属性'Email'。

下面是我的JavaBean类的代码:

import com.opencsv.bean.CsvBindByName;

import java.io.Serializable;

public class SubscriberBean implements Serializable {

@CsvBindByName
String Email;

@CsvBindByName
String Name;

public SubscriberBean() {}

public SubscriberBean(String email, String name) {
    this.Email = email;
    this.Name = name;
}

public String getName() {
    return Name;
}

public void setName(String name) {
    Name = name;
}

public String getEmail() {
    return Email;
}

public void setEmail(String email) {
    Email = email;
}

@Override
public String toString() {
    return "SubscriberBean [" + "Email=" + Email + ", Name=" + Name + ']';
}

public Boolean isEmpty() {
    return (this.Name.equals("") || this.Email.equals("") || this.Name == null || this.Email == null);
}
以及我如何尝试在csv文件中存储数据的代码:

List<SubscriberBean>  lsb = new ArrayList<SubscriberBean>();
.
.
.

    try {
        Writer writer = new FileWriter("test.csv");
        StatefulBeanToCsv beanToCsv = new StatefulBeanToCsvBuilder(writer).build();

        beanToCsv.write(lsb);
        writer.close();
    } catch (CsvDataTypeMismatchException e) {
        e.printStackTrace();
    } catch (CsvRequiredFieldEmptyException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
List lsb=new ArrayList();
.
.
.
试一试{
Writer Writer=newfilewriter(“test.csv”);
StatefulBeanToCsv beanToCsv=新建StatefulBeanToCsvBuilder(writer.build();
beanToCsv.write(lsb);
writer.close();
}捕获(CsvDataTypeMismatchException e){
e、 printStackTrace();
}捕获(CsvRequiredFieldEmptyException e){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
我检查了JavaBean类,它看起来很好。CSV代码与opencsv网站上提供的示例几乎相同。

几乎在那里;)

apache beanutils希望字段以小写开头。例如
电子邮件
,而不是
电子邮件
,等等。这是固定的
订阅bean

public class SubscriberBean implements Serializable {

    @CsvBindByName
    String email;

    @CsvBindByName
    String name;

    public SubscriberBean() {
    }

    public SubscriberBean(String email, String name) {
        this.email = email;
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    // ...

}

请注意,由于使用小写字段,我不得不稍微更改setters。我添加了
this
参考:
this.email=email

由于getter和setter,我遇到了相同的异常。它们也应该被定义

是的,这让它起作用了。我正在学习一个教程,其中字段是大写的。相当愚蠢的错误。非常感谢。