복붙노트

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

SPRING

java.lang.NoSuchMethodException : userAuth.User. ()

나는 유효성 검사를 한 클래스를 가지고있다 :

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>()

문제가 어디에 있습니까?

해결법

  1. ==============================

    1.java.lang.NoSuchMethodException : userAuth.User. () 메시지는 누군가 매개 변수없이 생성자를 호출하려고 시도했음을 의미합니다. 기본 생성자를 추가하면이 문제가 해결됩니다.

    java.lang.NoSuchMethodException : userAuth.User. () 메시지는 누군가 매개 변수없이 생성자를 호출하려고 시도했음을 의미합니다. 기본 생성자를 추가하면이 문제가 해결됩니다.

    public class User {
    
        public User() {
    
        }
    
        ..
    }
    
  2. ==============================

    2.User 클래스가 다른 클래스의 비 정적 내부 클래스 (예 : UserAuth) 인 경우 외부 클래스가 인스턴스화되기 전에 User 클래스가 인스턴스화되도록 시도되면 메시지가 발생할 수 있습니다. 이 경우에는 null-arg 생성자가 코드에있을 수 있지만 외부 클래스가 아직 존재하지 않기 때문에 찾을 수 없습니다. 해결 방법은 내부 클래스를 독립 클래스로 추출하여 정적으로 만들거나 외부 클래스 초기화가 내부 클래스보다 먼저 수행되도록하는 것입니다.

    User 클래스가 다른 클래스의 비 정적 내부 클래스 (예 : UserAuth) 인 경우 외부 클래스가 인스턴스화되기 전에 User 클래스가 인스턴스화되도록 시도되면 메시지가 발생할 수 있습니다. 이 경우에는 null-arg 생성자가 코드에있을 수 있지만 외부 클래스가 아직 존재하지 않기 때문에 찾을 수 없습니다. 해결 방법은 내부 클래스를 독립 클래스로 추출하여 정적으로 만들거나 외부 클래스 초기화가 내부 클래스보다 먼저 수행되도록하는 것입니다.

  3. ==============================

    3.매개 변수없이 생성자를 추가하십시오.

    매개 변수없이 생성자를 추가하십시오.

    public class User {
      ...
      public User() {}
      ...
    }
    
  4. ==============================

    4.기본 no-args 생성자를 추가하는 대답은 분명하다고 생각합니다. 그러나 후자의 생성자에 대한 가시성에 대해서도 고려해야합니다. 이전 답변은 public no-args 기본 생성자의 사용을 보여줍니다. 대중의 시야가 클래스의 논리와 관련이 있는가?

    기본 no-args 생성자를 추가하는 대답은 분명하다고 생각합니다. 그러나 후자의 생성자에 대한 가시성에 대해서도 고려해야합니다. 이전 답변은 public no-args 기본 생성자의 사용을 보여줍니다. 대중의 시야가 클래스의 논리와 관련이 있는가?

    사실, Hibernate는 public no-args 생성자를 필요로하지 않는다. 하나는 여전히 가시성을 선택할 수 있습니다.

    따라서 나는 생성자의 가시성 (private / public / protected / default)을주의 깊게 돌보는 것이 좋습니다. 적절한 것을 선택하십시오. 예를 들어 아무도이 args 생성자를 호출 할 수 없으면 다음과 같이 개인 공개를 선택합니다.

    public class User {
      ...
      private User() {}
      ...
    }
    
  5. from https://stackoverflow.com/questions/18023870/java-lang-nosuchmethodexception-userauth-user-init by cc-by-sa and MIT license