java.lang.NoSuchMethodException: userAuth.User. & lt; init & gt; ()
Habe ich die Klasse mit Prüfung:
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;
}
}
wenn ich überprüfen der Werte, bekam ich die Meldung:
SEVERE: Servlet.service() for servlet osAppServlet threw exception
java.lang.NoSuchMethodException: userAuth.User.<init>()
wo ist das problem?
InformationsquelleAutor der Frage Lesya Makhova | 2013-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Nachricht
java.lang.NoSuchMethodException: userAuth.User.<init>()
bedeutet, dass jemand versuchte zu rufen, einen Konstruktor ohne Parameter. Hinzufügen eines default-Konstruktor soll dieses problem lösen:InformationsquelleAutor der Antwort micha
Hinzufügen Konstruktor ohne Parameter:
InformationsquelleAutor der Antwort seralex.vi
Wenn der User-Klasse ist eine nicht-statische innere Klasse von einer anderen Klasse (z.B. UserAuth), dann die Nachricht, die entstehen können, wenn der Benutzer der Klasse versucht, die instanziiert werden sollen, bevor der externe Klasse instanziiert wird. In diesem Fall ist die null-arg-Konstruktor könnte es in den code aber nicht gefunden werden, da die externe Klasse noch nicht existiert. Eine Lösung könnte sein, extrahieren Sie die innere Klasse in eine eigenständige Klasse, um es statisch oder um sicherzustellen, dass die Initialisierung der externen Klasse passiert, vor, die von der inneren Klasse.
InformationsquelleAutor der Antwort zovits
Ich denke, die Antwort, das hinzufügen einer Standard no-args-Konstruktor ist klar. Allerdings muss man auch darüber nachdenken, die Sichtbarkeit der letzteren Konstruktor. Die bisherigen Antworten zeigen die Verwendung eines öffentlichen keine Argumente default-Konstruktor. Ist die öffentlichen Sichtbarkeit in Hinblick auf die Klasse der' Logik?
Als eine Angelegenheit von der Tat, Hibernate erfordert keine öffentlichen no-args-Konstruktor. Man kann immer noch entscheiden, seine Außenwirkung.
Ich würde daher empfehlen, um die große kümmern, die Konstruktor ist die Sichtbarkeit (private/public/protected/default). Wählen Sie die passenden. Zum Beispiel, wenn niemand sollte in der Lage sein, diesen Aufruf Konstruktor ohne Argumente, wählen Sie ein private Sicht etwa so:
InformationsquelleAutor der Antwort D. Lawrence