java - 摘要解析器错误 java.lang.NoSuchMethodException : Employee. <init>()

标签 java xml xml-parsing sax

我正在尝试使用digester解析xml。

我的 XML

<root>
<Employee>
    <Id>1</Id>
    <FirstName>Charles</FirstName>
    <LastName>Madigen</LastName>
    <Location>Louisiana</Location>
    <Skill>Accountant</Skill>
</Employee>
</root>

我的员工类(class)

public class Employee { 
    private int empId;
    private String fName;
    private String lName;
    private String location;
    private String skill;   
    public Employee(int empId, String fName, String lName, String location,
            String skill) {
        this.empId = empId;
        this.fName = fName;
        this.lName = lName;
        this.location = location;
        this.skill = skill;
    }
    @Override
    public String toString() {
        return "Employee [empId=" + empId + ", fName=" + fName + ", lName="
                + lName + ", location=" + location + ", skill=" + skill + "]";
    }

    public void setEmpId(int empId) {
        this.empId = empId;
    }

    public void setfName(String fName) {
        this.fName = fName;
    }

    public void setlName(String lName) {
        this.lName = lName;
    }

    public void setLocation(String location) {
        this.location = location;
    }
    public void setSkill(String skill) {
        this.skill = skill;
    }

}

和我的读者类

public class CSVtoXMLTransformer {

    public static void main(String[] args) throws IOException  {        
        CSVtoXMLTransformer cx=new CSVtoXMLTransformer();
        //cx.transfromer();
        cx.validator();
    }                               

    void validator() throws IOException{                        
        String itemTag = "root/Employee";
        Digester digester = new Digester();
        digester.setValidating(false);
        digester.addObjectCreate(itemTag, "assignment3.Employee");
        digester.addCallMethod(itemTag + "/Id", "setEmpId", 0);
        digester.addCallMethod(itemTag + "/FirstName", "setfName", 0);
        digester.addCallMethod(itemTag + "/LastName", "setlName", 0);
        digester.addCallMethod(itemTag + "/Location", "setLocation", 0);
        digester.addCallMethod(itemTag + "/Skill", "setSkill", 0);   

          File inputFile = new File( "generatedEmployee.xml" );
          Employee emp;
        try {
            emp = (Employee)digester.parse( inputFile );
             System.out.println(emp);
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }                               
    }        
}

但是在运行时我收到此错误,任何人都可以帮助我解决这个问题

org.xml.sax.SAXParseException; systemId: file:/D:/workspace/poc2/generatedEmployee.xml; lineNumber: 2; columnNumber: 11; Error at line 2 char 11: assignment3.Employee
    at org.apache.commons.digester.Digester.createSAXException(Digester.java:3363).......
Caused by: java.lang.NoSuchMethodException: assignment3.Employee.<init>()
    at java.lang.Class.getConstructor0(Unknown Source)
    ... 17 more.....

最佳答案

Caused by: java.lang.NoSuchMethodException: assignment3.Employee.<init>()
    at java.lang.Class.getConstructor0(Unknown Source)

带有签名的方法assignment3.Employee.<init>()在编译的代码中找不到,这就是 JVM 引发 java.lang.NoSuchMethodException 的原因异常(exception)。

在您的类中,您已经创建了参数化构造函数,当您创建参数化构造函数时,编译器不会创建默认构造函数,因此您还必须实现默认构造函数。

关于java - 摘要解析器错误 java.lang.NoSuchMethodException : Employee. <init>(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34718226/

相关文章:

java - PMD : DD anomaly for variable

java - 在消化器中解析 map

python - 无法使用python获取xml文件的元素值

javascript - 如何使用 jQuery 查询字符串?

java - 如何使用 Cargo Maven 插件部署在两个不同的 glassfish 域上?

java - 无法处理零件,因为即使现有的 multipartResolver 也没有提供多部分配置

java - GWT中的CellList,无法清除它

java - 使用 XSLT 和 Java 替换 XML 节点文本?

php - 循环遍历 XML,仅在特定 ID 处循环 "look"

java - 如何在 JSP 中从该 XML 中提取值