Problema ao subir a versão do vraptor da 3.3.1 para a 3.4.1

oi pessoal

fiz atualização da versão 3.3.1 para a 3.4.1 e agora está dando erro quando submeto 1 do formulários

stacktrace:

GRAVE: Servlet.service() for servlet [default] in context with path [/vibro] threw exception
br.com.caelum.vraptor.http.InvalidParameterException: Exception when trying to instantiate Target(name=forecast, type=class com.vibro.domain.Forecast)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:95)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.handleException(VRaptorInstantiator.java:97)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:87)
	at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.instantiate(VRaptorInstantiator.java:80)
	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:126)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:83)
	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.interceptor.multipart.CommonsUploadMultipartInterceptor.intercept(CommonsUploadMultipartInterceptor.java:136)
	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: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$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: Paranamer were not able to find your parameter names for public com.vibro.domain.WaveCondition(org.eclipse.persistence.internal.descriptors.PersistenceObject)You must compile your code with debug information (javac -g) or register another name provider. Try to use br.com.caelum.vraptor.http.DefaultParameterNameProvider instead.
	at br.com.caelum.vraptor.http.ParanamerNameProvider.parameterNamesFor(ParanamerNameProvider.java:60)
	at br.com.caelum.vraptor.http.iogi.VRaptorParameterNamesProvider.lookupParameterNames(VRaptorParameterNamesProvider.java:29)
	at br.com.caelum.iogi.reflection.ClassConstructor.<init>(ClassConstructor.java:24)
	at br.com.caelum.iogi.reflection.Target.constructors(Target.java:114)
	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:85)
	at br.com.caelum.iogi.reflection.NewObject.setProperty(NewObject.java:57)
	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:85)

O que poderia ser?

se vc tá subindo o servidor dentro do eclipse (ou netbeans) tenta dar um clean no projeto e no servidor e reiniciar

já fiz isso e não mudou nada. Continua com dando a mesma mensagem…

com.vibro.domain.WaveCondition

isso é uma classe do seu sistema? ou tá dentro de um jar?

do meu sistema!

é um campo do formulário…

<select name="forecast.waveCondition.id" id="selectWaveCondition">
							<c:forEach items="${waveConditions}" var="_w">
								<option value="${_w.id}"> ${_w.descriptionPt} </option>
							</c:forEach> 
						</select>

algum motivo pra ter esse construtor:

com.vibro.domain.WaveCondition(org.eclipse.persistence.internal.descriptors.PersistenceObject)

?

este construtor não existe…
meus 2 construtores…

public WaveCondition(int id, String descriptionPt, String descriptionEn) {
		this.id = id;
		this.descriptionPt = descriptionPt;
		this.descriptionEn = descriptionEn;
	}

	public WaveCondition() {
	}

se não existe no .java, alguém está colocando esse construtor:

public com.vibro.domain.WaveCondition(org.eclipse.persistence.internal.descriptors.PersistenceObject)

por isso o erro…
tem algum plugin no seu eclipse que vc acha que faria isso?

não.

Estou usando o eclipse indigo. Adicionei 2 únicos plugins: maven e egit

vc tá usando eclipse link ao invés do hibernate, certo?

o eclipse link provavelmente está modificando a sua classe antes de rodar o servidor.

Bom, correção rápida pra esse problema é colocar o jar do ognl como dependência do projeto e remover o pacote do iogi do web.xml, se houver.

Beleza cara! Funcionou! Obrigado!

O problema era a dependencia do ognl faltando. Não tinha nada de iogi.
Porque este problema?

Estou usando eclipselink sim, alguma recomendação com relação a isso?

Obrigado mais uma vez.

na última versão a gente trocou a implementação dos parametros do ognl pro iogi… e ele é um pouco diferente.

nunca mexi com o eclipselink, não posso te dar recomendações =)

thanks

Ainda não deu certo o upload oh…

Estou conseguindo submeter o formulário porém os arquivos não vão. Qando vou inspencionar o array do parametro do método tem esta mensagem :
“org.eclipse.debug.core.DebugException:
com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.”

daí o resultado é como se o array estivesse nulo.

=/

que array vc tah recebendo?

@Post @Authenticated
	public void add(UploadedFile[] files, final Forecast forecast)
<input type="file" name="files[]" multiple />

este array!

isso funcionava no 3.3.1 e não funciona no 3.4.1?

isso não tinha no 3.3.1 porque o vraptor não suportava.

subi a versão do vraptor pois me interessa o upload de vários arquivos.
Então estou tentando adicionar agora, vi essa implementacão em 1 outro post aqui no guj…

tenta trocar de UploadedFile[] pra List

funcionou!
show!
obrigado!