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

新手上路,请多包涵

我有验证类:

 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;
    }

}

当我验证值时,我收到消息:

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

问题出在哪里?

原文由 Lesya Makhova 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 607
2 个回答

消息 java.lang.NoSuchMethodException: userAuth.User.<init>() 表示有人试图调用不带任何参数的构造函数。添加默认构造函数应该可以解决这个问题:

 public class User {

    public User() {

    }

    ..
}

原文由 micha 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果 User 类是另一个类(例如 UserAuth)的非静态内部类,则如果在实例化外部类之前尝试实例化 User 类,则可能会出现该消息。在这种情况下,null-arg 构造函数可能存在于代码中,但不会被发现,因为外部类尚不存在。一个解决方案可能是将内部类提取到一个独立的类中,使其成为静态的或确保外部类的初始化发生在内部类的初始化之前。

原文由 zovits 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题