java.lang.NoSuchMethodException: userAuth.User.<init>()

Lesya Makhova picture Lesya Makhova · Aug 2, 2013 · Viewed 81.7k times · Source

I have the class with validation:

public class User {
    @Size(min=3, max=20, message="User name must be between 3 and 20 characters long")
    @Pattern(regexp="^[a-zA-Z0-9]+$", message="User name must be alphanumeric with no spaces")
    private String name;

    @Size(min=6, max=20, message="Password must be between 6 and 20 characters long")
    @Pattern(regexp="^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$", message="Password must contains at least one number")
    private String password;

    public User(String _name, String _password){
        super();
        name = _name;
        password = _password;
    }

    public String getName(){
        return name;
    }

    public String getPassword(){
        return password;
    }

    public void setPassword(String newPassword){
        password = newPassword;
    }

}

when I validate values, I got the message:

SEVERE: Servlet.service() for servlet osAppServlet threw exception
java.lang.NoSuchMethodException: userAuth.User.<init>()

where is the problem?

Answer

micha picture micha · Aug 2, 2013

The message java.lang.NoSuchMethodException: userAuth.User.<init>() means that someone tried to call a constructor without any parameters. Adding a default constructor should solve this problem:

public class User {

    public User() {

    }

    ..
}