Jsp javax.el.ELException:类[java.lang.Number]必须是公共的、非抽象的,而不是接口

Jsp javax.el.ELException:类[java.lang.Number]必须是公共的、非抽象的,而不是接口,jsp,jstl,el,Jsp,Jstl,El,我在我的jsp页面上看到了“Error 500:javax.el.ELException:class[java.lang.Number]必须是公共的、非抽象的,并且不是接口” 这是日志 000001f8 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servl

我在我的jsp页面上看到了“Error 500:javax.el.ELException:class[java.lang.Number]必须是公共的、非抽象的,并且不是接口”

这是日志

000001f8 ServletWrappe E com.ibm.ws.webcontainer.servlet.ServletWrapper service SRVE0068E: An exception was thrown by one of the service methods of the servlet [/WEB-INF/pages/tpl/docDetail.jsp] in application [gsa]. Exception created : [javax.el.ELException: The class [java.lang.Number] must be public, non-abstract and not an interface
        at javax.el.ImportHandler.findClass(ImportHandler.java:231)
        at javax.el.ImportHandler.resolveClass(ImportHandler.java:185)
        at javax.servlet.jsp.el.ScopedAttributeELResolver.getValue(ScopedAttributeELResolver.java:140)
        at org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:110)
        at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:80)
        at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
        at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:815)
        at com.ibm._jsp._docDetail._jspx_meth_c_out_1(_docDetail.java:311)
        at com.ibm._jsp._docDetail._jspService(_docDetail.java:130)
        at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1235)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
        at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
        at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
        at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:220)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1124)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1390)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:196)
        at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
        at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
        at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
        at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
        at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
        at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
        at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
以下是我的docDetail.jsp页面代码:


运输署{
颜色:#000000;
字号:10pt;
字体系列:Arial、Helvetica、无衬线字体;
文字装饰:无;
}
var g_计数;
var g_位置;
功能禁用按钮(){
如果(顶部['barFs']){
g_计数=“”;
g_位置=“”;
如果(!(顶部['barFs'].禁用按钮)){
setTimeout(“delay100()”,100);
}否则{
顶部['BARF']。禁用按钮(g_计数、g_位置);
}
}
}
函数delay100(){
如果(!(顶部['barFs'].禁用按钮)){
setTimeout(“delay100()”,100);
}否则{
顶部['BARF']。禁用按钮(g_计数、g_位置);
}
}
: 

修复变量名以符合,此问题将消失

罪魁祸首在这里:

<c:out value="${Number}"/>
在Java中,变量名以小写开头,类名以大写开头。自EL 3.0以来,
java.lang.*
包中的任何内容都隐式地导入EL范围,因此
java.lang.Number
也是如此。换句话说,当您在EL中引用与
java.lang.Number
类匹配的
${Number}
时,它会尝试加载它,但它无法加载,因为它是
抽象的

但这毕竟不是你的意图。很明显,您打算引用一个自定义变量,您只是将其命名为
Number
,而不是
Number


至于为什么在地球上,ApacheEL试图这样解析
${Number}
,而它根本没有任何常量,这是另一个问题。你最好这样。

这并不能解决问题。仍然得到相同的错误。应用程序已从WAS7迁移到WAS9,问题开始出现。使用相同的代码,它在WAS7上运行良好。然后,在编辑变量名后,您忘记了保存、重建或重新部署代码。当然,它可以在WAS7上工作,因为旧beast只使用EL 2.1。然后,您忘了在JSP文件中重命名其他出现的
${Number}
。如果您在代码更改的情况下得到完全相同的错误(包括完全相同的堆栈跟踪),那么您就不会运行您认为正在运行的代码。谢谢!我的问题现在解决了。您的解决方案工作正常,因为代码部署不正确。
at javax.el.ImportHandler.findClass(ImportHandler.java:231) 
at javax.el.ImportHandler.resolveClass(ImportHandler.java:185)