vRaptor java.lang.NoSuchMethodError: net.vidageek.mirror.reflect.dsl.AllReflectionHandler.metho

3 respostas
M

Pessoal,

Estou trabalhando com o vRaptor já tem uns meses e não tive problema algum. Essa semana eu iniciei um novo projeto e aproveitei para atualizar a versão do vRaptor para 3.5.0, acontece que me deparei com um erro que eu ainda não tinha visto em um procedimento bastante comum. Eu criei as minhas classes e a partir delas o hibernate criou o banco de dados, em seguida criei uma tela simples de cadastro de um contrato e o controller - antes de carregar a tela eu faço uma busca no banco para ver se já existe algum registro do contrato, caso exista ele carrega o bean e eu exibo as informações na tela. Quanto eu completo as informações do contrato na tela e mando salvar a requisição nem chega no controller e me vem o erro abaixo:

Abr 09, 2013 11:16:59 AM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet default threw exception
java.lang.NoSuchMethodError: net.vidageek.mirror.reflect.dsl.AllReflectionHandler.methodsMatching(Lnet/vidageek/mirror/list/dsl/Matcher;)Ljava/util/List;
	at br.com.caelum.iogi.reflection.NewObject$JavaSetter.settersOf(NewObject.java:117)
	at br.com.caelum.iogi.reflection.NewObject$Setter.settersIn(NewObject.java:66)
	at br.com.caelum.iogi.reflection.NewObject$Setter.access$000(NewObject.java:62)
	at br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:50)
	at br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41)
	at br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:30)
	at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:81)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73)
	at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:132)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
	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.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
	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.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.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:91)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)

o meu bean está assim:

package br.fgv.auditoria.bean;

import java.math.BigDecimal;
import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
public class Documento {
	

	@Id
	@GeneratedValue
	private Long id;
	
	private String codigo;
	
	private String objetoContrato;
	
	private Long idDocTipo;
	
	private Long idFornecedor;
	
	private Long idMedicao;
	
	private Long idReforcoEmpenho;
	
	private Long idClassificacaoEconomica;
	
	private int prazoDias;
	
	private Timestamp dataInicioVigencia;
	
	private Timestamp dataFinalVigencia;
	
	private BigDecimal valorPrincipal = new BigDecimal(0);
	
	private BigDecimal valorReajuste = new BigDecimal(0);
	
	private BigDecimal valorTotal = new BigDecimal(0);
	
	private String numeroClausulaFinanceira;
	
	private Timestamp dataAssinatura;
	
	private boolean caucao;
	
	private BigDecimal valorCaucao = new BigDecimal(0);
	
	private Timestamp dataRecolhimentoCaucao;
	
	private String numeroProcessoAdministrativo;
	
	private String numeroEmpenho;
	
	private String alteradoPor;

	private Timestamp dataUltAtualizacao;
        //getters e seters
e a tela eu fiz assim:
<li>
					<ul id="cadastrarPerfil">
						<li>
							<label class="fixed"><fmt:message key="informe.codigo.documento" />:</label> 
							<input id="codigo" type="text" class="required" name="documento.codigo" value="${documento.codigo }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="objeto.contratacao" />:</label> 
							<textarea id="objeto" name="documento.objetoContrato">${documento.objetoContrato }</textarea>
						</li>
						<li>
							<label for="autocomplete" class="fixed"><fmt:message key="contratada" />:</label>
							<input id="contratada" type="text" class="required" name="documento.idFornecedor" value="" /></li>
						</li>
						<li>
							<label class="fixed"><fmt:message key="tipo.documento" />:</label> 
							<fgv:comboDocTipo docTipoList="${tipoDocumento }" id="documento.idDocTipo" /></li>
						<li>
							<label class="fixed"><fmt:message key="prazo" />:</label>
							<input id="prazoDias" type="text" class="required"	name="documento.prazoDias" value="${documento.prazoDias }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="contrato.assinado" />:</label>
							<input id="dataAssinatura" type="text" class="required"	name="documento.dataAssinatura" value="" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="inicio.vigencia" />:</label>
							<input id="dataInicio" type="text" class="required"	name="documento.dataInicioVigencia" value="" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="fim.vigencia" />:</label>
							<input id="dataFim" type="text" class="required" name="documento.dataFinalVigencia" value="" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="valor.principal" />:</label>
							<input id="valorPrincipal" type="text" class="required"	name="documento.valorPrincipal" value="${documento.valorPrincipal }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="valor.reajuste" />:</label>
							<input id="valorReajuste" type="text" class="required"	name="documento.valorReajuste" value="${documento.valorReajuste }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="valor.total" />:</label>
							<input id="valorTotal" type="text" class="required"	name="documento.valorTotal" value="${documento.valorTotal }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="numero.clausula.financeira" />:</label>
							<input id="numeroClausulaFinanceira" type="text" class="required"	name="documento.numeroClausulaFinanceira" value="${documento.numeroClausulaFinanceira }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="elemento.despesa" />:</label>
							<input id="elementoDespesa" type="text" class="required"	name="documento.idClassificacaoEconomica" value="${documento.idClassificacaoEconomica }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="tem.caucao" />:</label>
							<input type="checkbox" id="temCaucao" name="temCaucao" value="true"> 
						</li>
						<li>
							<label id="labelValorCaucao" class="fixed"><fmt:message key="valor.caucao" />:</label>
							<input id="valorCaucao" type="text" class="required" name="documento.valorCaucao" value="${documento.valorCaucao }" />
						</li>
						<li>
							<label id="labelDataRecolhimentoCaucao" class="fixed"><fmt:message key="data.recolhimento" />:</label>
							<input id="dataRecolhimentoCaucao" type="text" class="required" name="documento.dataRecolhimentoCaucao" value="" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="numero.processo.administrativo" />:</label>
							<input id="numeroProcessoAdministrativo" type="text" class="required"	name="documento.numeroProcessoAdministrativo" value="${documento.numeroProcessoAdministrativo }" />
						</li>
						<li>
							<label class="fixed"><fmt:message key="numero.empenho" />:</label>
							<input id="numeroEmpenho" type="text" class="required"	name="documento.numeroEmpenho" value="${documento.numeroEmpenho }" />
						</li>

					</ul>
				</li>

será que alguém já teve esse problema?

Um abraço,
Mauricio

3 Respostas

G

Verifique a versão das libs que você tem do Guava, Mirror e IOGI. Elas devem ser:

Guava 11+
IOGI 0.9.2+
Mirror 1.6.1 (não pode ser nenhuma versão posterior)

M

Garcia,
Você tinha razão eu estava com uma versão antiga do Mirror.
Eu fiz a atualização mas ainda estou com um erro.

Abr 09, 2013 12:42:12 PM org.apache.catalina.core.StandardWrapperValve invoke Grave: Servlet.service() for servlet default threw exception br.com.caelum.vraptor.http.InvalidParameterException: Exception when trying to instantiate Target(name=documento, type=class br.fgv.auditoria.bean.Documento) at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:96) at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:98) at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:88) at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:81) at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateOrAddError(IogiParametersProvider.java:80) at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.instantiateParameters(IogiParametersProvider.java:73) at br.com.caelum.vraptor.http.iogi.IogiParametersProvider.getParametersFor(IogiParametersProvider.java:63) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.getParametersFor(ParametersInstantiatorInterceptor.java:132) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86) 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.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:91) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: argument type mismatch at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at net.vidageek.mirror.provider.java.PureJavaMethodReflectionProvider.invoke(PureJavaMethodReflectionProvider.java:38) at net.vidageek.mirror.invoke.MethodHandlerByMethod.withArgs(MethodHandlerByMethod.java:54) at br.com.caelum.iogi.reflection.NewObject$Setter.set(NewObject.java:86) at br.com.caelum.iogi.reflection.NewObject.setProperty(NewObject.java:58) at br.com.caelum.iogi.reflection.NewObject.populateProperties(NewObject.java:51) at br.com.caelum.iogi.reflection.NewObject.valueWithPropertiesSet(NewObject.java:41) at br.com.caelum.iogi.ObjectInstantiator.instantiate(ObjectInstantiator.java:30) at br.com.caelum.iogi.MultiInstantiator.instantiate(MultiInstantiator.java:20) at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:86) ... 31 more

Você tem ideia do que pode ser?

Obrigado pela ajuda!
Um abraço,

M

Pessoal,

Resolvido o problema. Eu estava comendo bola e tentando mandar uma string em um atributo timeStamp.

Obrigado pela ajuda!

Criado 9 de abril de 2013
Ultima resposta 9 de abr. de 2013
Respostas 3
Participantes 2