2010-06-11 3 views
9
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 die Ursache und die Lösung dieses Problems erklären?JasperException: Der Wert für das UseBean-Klassenattribut ist ungültig

+0

könnten Sie den Code, der diesen Fehler verursacht, veröffentlichen? – gruntled

Antwort

11
 
The value for the useBean class attribute com.b5 is invalid. 

So haben Sie eine

<jsp:useBean id="b5" class="com.b5" /> 

Diese Ausnahme ist typisch, wenn die folgende geschieht „hinter den Kulissen“ versagt:

com.b5 b5 = new com.b5(); 

Neben der Anforderung, dass es im Inneren platziert werden soll ein Paket (die Sie so richtig gemacht), die Bohne sollte sich eine public Klasse sein und haben eine (implizite) public no-arg-Konstruktor. I.e.

package com; 

public class b5 { 
    public b5() { 
     // Default constructor. 
    } 
} 

Normalerweise ist dieser Konstruktor bereits vorhanden, aber das wird ausgeblendet werden, wenn Sie andere Konstrukteure hinzufügen, die anderen Argumente. Sie müssen es dann explizit hinzufügen.

Eine weitere mögliche Ursache ist, dass die Bean-Klasse nicht in dem Runtime-Classpath finden. Wenn dies Ihr eigener Bean ist, dann sicherzustellen, dass seine class Datei in /WEB-INF/classes/com/b5.class befindet. Stellen Sie außerdem sicher, dass der vollständige qualifizierte Name com.b5 im wahrsten Sinne des Wortes korrekt ist.

Sie sollten für die genaue Ursache des Problems ein bisschen weiter in dem Stacktrace suchen. Gehen Sie zu den Teilen root cause oder caused by am Ende der Kurve.


Das heißt (und nicht mit dem tatsächlichen Problem), ist der Klassenname b5 eine ziemlich schlechte Wahl. Es sollte ein vernünftiger Name sein, beginnend mit Großbuchstaben, z. User, Product, Order usw.

+0

Hallo! Ich habe das gleiche Problem, aber meine 'Klassen' befinden sich nicht im' WEB-INF'-Ordner. Ich möchte jedoch den Speicherort meines Klassenordners nicht ändern. Kennen Sie eine Möglichkeit, die jsp-Dateien mit einem anderen Speicherort für die Klassen zu kompilieren? –

1

Ich hatte gerade das gleiche Problem. Zusätzlich zu den oben genannten stellen Sie sicher, dass Sie daran erinnert, Ihre Klasse selbst auf "public"

0

Ich hatte das gleiche Problem und wie oben hervorgehoben, habe ich vergessen, den Standardkonstruktor hinzufügen, da ich eine überschriebene hinzugefügt hatte.

Grund java, fügt der Compiler eine Standard kein arg Konstruktor in jede Klasse, die Sie erstellen, außer wenn Sie explizit einen Konstruktor hinzu.

1

statt
<jsp:useBean id="b5" class="com.b5" />
Verwendung
<jsp:useBean id='b5'>
<jsp:attribute name="class" trim="true">com.b5</jsp:attribute>
</jsp:useBean>

auch Tomcatbediener nach Änderungen

4

neu starten Typ Versuchen statt Klasse

Der Unterschied gemäß der Dokumentation:

class = "package.class" type = "package.class" Instanziiert eine Bohne aus der Klasse in Klasse mit dem Namen und ordnet die Bohne der Daten, die Sie in Typ angeben eingeben.Der Wert von type kann derselbe sein wie class, eine Oberklasse der Klasse oder eine Schnittstelle, die durch die Klasse implementiert wird. Die Klasse, die Sie in der Klasse angeben, darf nicht abstrakt sein und muss einen öffentlichen Konstruktor ohne Argumente haben. Bei den Paket- und Klassennamen, die Sie mit Klasse und Typ verwenden, wird zwischen Groß- und Kleinschreibung unterschieden. beanName = "{package.class |}" type = "package.class" Instanziiert ein Bean aus einer Klasse, einer serialisierten Vorlage oder einem Ausdruck, der eine Klasse oder eine serialisierte Vorlage ergibt. Wenn Sie beanName verwenden, wird die Bean durch die Methode java.beans.Beans.instantiate instanziiert. Die Beans.instantiate-Methode überprüft, ob das angegebene Paket und die Klasse eine Klasse oder eine serialisierte Vorlage darstellen. Wenn sie eine serialisierte Vorlage darstellen, liest Beans.instantiate die serialisierte Form (die einen Namen wie package.class.ser hat) mit einem Klassenlader. Der Wert von type kann dem BeanName, einer Oberklasse von BeanName oder einer von BeanName implementierten Schnittstelle entsprechen. Die Paket- und Klassennamen, die Sie sowohl für beanName als auch für type verwenden, unterscheiden zwischen Groß- und Kleinschreibung.
0

Ihr Arbeitsbereich hat die Klasse, die gebraucht wirdBean, also während der Arbeit wird es keine Fehlermeldung werfen. Wenn Sie die Anwendung jedoch wie in der Datei deploy.properties bereitgestellt haben, ist es möglich, dass Ihre Klasse, die Sie in useBean verwendet haben, nicht bereitgestellt wird. Überprüfen Sie Ihre Datei deploy.properties.Hope es wird funktionieren !!

Verwandte Themen