Erro Inesperado javax.el.ELException [Resolvido]

6 respostas
A

Boa tarde pessoal,

Estou desenvolvendo uma aplicação usando:

  • Java 7
  • VRaptor 3.4
  • Tiles 2.2
  • Tomcat 7.0.26

O problema é o seguinte, ontem estava funcionando tudo normal, mas hoje fui implementar uma funcionalidade e o servidor começou a mostrar o seguinte erro em várias telas que não foram alteradas:

Grave: Servlet.service() for servlet jsp threw exception
javax.el.ELException: Cannot convert C of type class java.lang.String to class java.lang.Long
	at org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:304)
	at org.apache.el.lang.ELSupport.coerceToNumber(ELSupport.java:283)
	at org.apache.el.lang.ELSupport.equals(ELSupport.java:144)
	at org.apache.el.parser.AstEqual.getValue(AstEqual.java:40)
	at org.apache.el.parser.AstOr.getValue(AstOr.java:38)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:985)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp._jspx_meth_c_005fif_005f1(formularioFatura_jsp.java:212)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp.access$4(formularioFatura_jsp.java:203)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp$Helper.invoke1(formularioFatura_jsp.java:1034)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp$Helper.invoke(formularioFatura_jsp.java:1233)
	at org.apache.tiles.jsp.context.JspUtil.evaluateFragmentAsString(JspUtil.java:297)
	at org.apache.tiles.jsp.taglib.PutAttributeTag.doTag(PutAttributeTag.java:256)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp._jspx_meth_tiles_005fputAttribute_005f0(formularioFatura_jsp.java:129)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp.access$0(formularioFatura_jsp.java:117)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp$Helper.invoke0(formularioFatura_jsp.java:1006)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp$Helper.invoke(formularioFatura_jsp.java:1230)
	at org.apache.tiles.jsp.context.JspUtil.evaluateFragment(JspUtil.java:279)
	at org.apache.tiles.jsp.taglib.InsertTemplateTag.doTag(InsertTemplateTag.java:254)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp._jspx_meth_tiles_005finsertTemplate_005f0(formularioFatura_jsp.java:112)
	at org.apache.jsp.WEB_002dINF.jsp.fatura.formularioFatura_jsp._jspService(formularioFatura_jsp.java:87)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:684)
	at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:471)
	at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
	at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
	at br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:67)
	at br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:87)
	at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.metalurgica.interceptor.AutenticacaoInterceptor.intercept(AutenticacaoInterceptor.java:66)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.provideForRequest(GuiceProvider.java:81)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)

Mar 30, 2012 4:51:29 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [default] in context with path [/Metalurgica] threw exception
br.com.caelum.vraptor.validator.ValidationException

Pelo erro ele está dizendo que estou tentando converter um P em Long, mas isso não existe no código, ontem essa mesma tela estava funcionando, e hoje sem mexer nela parou de funcionar.

Aguem tem alguma ideia?

6 Respostas

A

Procure em seu código que vc ta tentando converter alguma String em um Long de forma incorreta.

Provavelmente desta linha 212.

É só ler o log do console.

A

Como eu respondi, não existe esse tipe de conversão. Estava tudo funcionando até ontem, mas hoje apenas criei um novo método e uma nova janela e começou a mostrar esse erro em várias telas.

Continuo aguardando sugestões.

A

Outra coisa, esse formularioFatura.jsp só tem 166 linhas.

A

Isso é o codigo fonte gerado, vai na tua página e manda exibir o código fonte. Isso é erro de programação se as libs estiverem todas corretas.

A

Cara, isso não é erro, troquei o servidor para Tomcat 7.0.19 e voltou a funcionar sem precisar de efetuar qualquer alteração.

Brocações de Java

A

Para quem precisar, finalmente consegui descobrir o problema.

Parece que a EL trata os atributos “char” como “Long”, ou seja, ela não pega o caracter em si, mas “valor” desse caracter na tabela ASCII.

O código estava assim:

${fatura.financeiro.tipo == "C" ? "Crédito" : "Débito"}

Agora eu só acrescentei o charAt(0):

${fatura.financeiro.tipo == "C".charAt(0) ? "Crédito" : "Débito"}

Problema resolvido.

Criado 30 de março de 2012
Ultima resposta 5 de jul. de 2012
Respostas 6
Participantes 2