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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释这个问题的原因和解决方案吗?
Bal*_*usC 12
The value for the useBean class attribute com.b5 is invalid.
所以你有一个
<jsp:useBean id="b5" class="com.b5" />
Run Code Online (Sandbox Code Playgroud)
当"幕后"发生以下情况时,此异常是典型的:
com.b5 b5 = new com.b5();
Run Code Online (Sandbox Code Playgroud)
除此之外,它应该放在一个包内(你这样做正确)的要求,绿豆本身应该是一个public类,并有一个(隐含的)public无参数的构造函数.即
package com;
public class b5 {
public b5() {
// Default constructor is optional when there are no other constructors.
}
}
Run Code Online (Sandbox Code Playgroud)
通常这个构造函数已经存在,但只要添加其他带有其他参数的构造函数,就会隐藏它.然后,您需要自己添加它.
另一个可能的原因是在运行时类路径中找不到bean类.如果这是您自己的bean,请确保其class文件位于/WEB-INF/classes/com/b5.class.还要确保完全限定名称com.b5在字面上是正确的,它区分大小写.
您应该在stacktrace中查看问题的确切原因.前往迹线底部的部分root cause或caused by部分.
那说(并且与实际问题无关),类名b5是一个非常糟糕的选择.这应该是一个明智的名称以大写,如User,Product,Order,等.
尝试输入类型而不是类
根据文档的差异:
class ="package.class"type ="package.class"从类中指定的类实例化bean,并为bean指定在type中指定的数据类型.type的值可以与class,类的超类或类实现的接口相同.您在类中指定的类不能是抽象的,并且必须具有public,no-argument构造函数.您对类和类型使用的包和类名称区分大小写.beanName ="{package.class |}"type ="package.class"从类,序列化模板或计算结果为类或序列化模板的表达式实例化bean.使用beanName时,bean由java.beans.Beans.instantiate方法实例化.Beans.instantiate方法检查您指定的包和类是表示类还是序列化模板.如果它们代表一个序列化模板,Beans.instantiate使用类加载器读取序列化形式(其名称类似于package.class.ser).type的值可以与beanName,beanName的超类或beanName实现的接口相同.与beanName和type一起使用的包和类名称区分大小写.
| 归档时间: |
|
| 查看次数: |
29940 次 |
| 最近记录: |