[SPRING] java.lang.NoSuchMethodException : userAuth.User. <init> ()
SPRINGjava.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.java.lang.NoSuchMethodException : userAuth.User.
() 메시지는 누군가 매개 변수없이 생성자를 호출하려고 시도했음을 의미합니다. 기본 생성자를 추가하면이 문제가 해결됩니다. java.lang.NoSuchMethodException : userAuth.User.
() 메시지는 누군가 매개 변수없이 생성자를 호출하려고 시도했음을 의미합니다. 기본 생성자를 추가하면이 문제가 해결됩니다. public class User { public User() { } .. }
-
==============================
2.User 클래스가 다른 클래스의 비 정적 내부 클래스 (예 : UserAuth) 인 경우 외부 클래스가 인스턴스화되기 전에 User 클래스가 인스턴스화되도록 시도되면 메시지가 발생할 수 있습니다. 이 경우에는 null-arg 생성자가 코드에있을 수 있지만 외부 클래스가 아직 존재하지 않기 때문에 찾을 수 없습니다. 해결 방법은 내부 클래스를 독립 클래스로 추출하여 정적으로 만들거나 외부 클래스 초기화가 내부 클래스보다 먼저 수행되도록하는 것입니다.
User 클래스가 다른 클래스의 비 정적 내부 클래스 (예 : UserAuth) 인 경우 외부 클래스가 인스턴스화되기 전에 User 클래스가 인스턴스화되도록 시도되면 메시지가 발생할 수 있습니다. 이 경우에는 null-arg 생성자가 코드에있을 수 있지만 외부 클래스가 아직 존재하지 않기 때문에 찾을 수 없습니다. 해결 방법은 내부 클래스를 독립 클래스로 추출하여 정적으로 만들거나 외부 클래스 초기화가 내부 클래스보다 먼저 수행되도록하는 것입니다.
-
==============================
3.매개 변수없이 생성자를 추가하십시오.
매개 변수없이 생성자를 추가하십시오.
public class User { ... public User() {} ... }
-
==============================
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() {} ... }
from https://stackoverflow.com/questions/18023870/java-lang-nosuchmethodexception-userauth-user-init by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring @Value 이스케이프 콜론 (:) 기본값 (0) | 2019.03.24 |
---|---|
[SPRING] 메인 클래스를 찾을 수 없습니다 : bootRepackage (0) | 2019.03.24 |
[SPRING] Spring 프레임 워크와 함께 generics를 사용하는 Object를 어떻게 인스턴스화합니까? (0) | 2019.03.24 |
[SPRING] Apache 7.0.54 및 Java 8로 배포하는 동안 Spring 컨텍스트 초기화가 java.lang.IllegalArgumentException으로 실패했습니다. (0) | 2019.03.24 |
[SPRING] 스프링 속성 (property-placeholder) autowiring (0) | 2019.03.24 |