JasperException: der Wert für Die useBean class-Attribut ist ungültig
org.apache.jasper.JasperException: /index.jsp(1,1) The value for the useBean class attribute com.b5 is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1272)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1178)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Generator.generate(Generator.java:3426)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:216)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Kann jemand erklären, die Ursache und Lösung dieses Problems?
- konnte Sie nach dem code, der diesen Fehler verursacht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
So haben Sie eine
Diese Ausnahme ist typisch, wenn Folgendes geschieht "hinter den kulissen" schlägt fehl:
Abgesehen von der Voraussetzung, dass es platziert werden soll in einem Paket (was Sie damit richtig getan haben), die Bohne sollte sich ein
public
Klasse und haben eine (implizite)public
no-arg-Konstruktor. I. e.Normalerweise wird dieser Konstruktor ist schon vorhanden, aber diese werden ausgeblendet, wenn Sie anderen Konstruktoren, die anderen Argumente. Sie müssen dann fügen Sie es selbst ausdrücklich.
Andere mögliche Ursache ist, dass die bean-Klasse nicht gefunden werden kann in der runtime-classpath. Wenn dies ist Ihre eigene Bohnen -, die dann dafür sorgen, dass seine
class
Datei befindet sich im/WEB-INF/classes/com/b5.class
. Auch sicherstellen, dass der voll qualifizierte namecom.b5
ist buchstäblich richtig, es ist groß-und Kleinschreibung. Du solltest dann schauen ein bisschen weiter in den stacktrace für die genaue Ursache des Problems. Den Kopf auf dieroot cause
odercaused by
Teile auf der Unterseite der Spur.Sagte (und die nichts mit dem eigentlichen problem), die classname
b5
ist eine ziemlich schlechte Wahl. Es sollte eine vernünftige Namen beginnen mit Großbuchstaben, z.B.User
,Product
,Order
usw. Auch mit<jsp:useBean>
statt einer servlet-basierten Steuerung ist eine schlechte Praxis. Wenn du dich mit servlets, start am servlets wiki-Seite.classes
befinden sich nicht innerhalbWEB-INF
Ordner. Aber ich will nicht zu ändern, meine Klassen-Ordner. Kennen Sie eine Weg zur precompile-die jsp-Dateien mit einem anderen Speicherort für die Klassen dir?Versuchen Typ anstelle von Klasse
Den Unterschied, wie pro die Dokumentation:
Ich hatte gerade das gleiche problem. Zusätzlich zu den oben genannten stellen Sie sicher, dass Sie erinnerte sich an Ihre Klasse selbst auf "öffentlich"
statt
<jsp:useBean id="b5" class="com.b5" />
verwenden
<jsp:useBean id='b5'>
<jsp:attribute name="class" trim="true">com.b5</jsp:attribute>
</jsp:useBean>
auch Neustart des tomcat-Servers nach änderungen
Ich hatte das gleiche problem und wie oben dargelegt, ich vergaß hinzuzufügen, der Standard-Konstruktor, da habe ich eine überschriebene ein.
Basic, java, fügt der compiler einen default keine arg-Konstruktor in jeder Klasse, die Sie erstellen, außer wenn Sie explizit fügen Sie einen Konstruktor.
Ihrem Arbeitsbereich die Klasse, die erforderlich useBean, so dass während der Arbeit es wird nicht werfen eine Fehlermeldung. Aber wenn Sie bei der Bereitstellung der Anwendung bereitgestellt als pro bereitstellen.Eigenschaften-Datei.Es könnte möglich sein, dass Ihre Klasse, die Sie in useBean ist nicht immer bereitgestellt.
Überprüfen Sie Ihre bereitstellen.Eigenschaften-Datei.Hoffe, es wird funktionieren!!