VRaptor4 Ambiguous dependencies

Estou migrando uma aplicação escrita com o vraptor3 e estou encontrando este erro em todos os lugares onde utilizo a interface br.com.caelum.vraptor.Result , inclusive o erro é apresentado dentro de classes do pacote vraptor.

17:07:46,833 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.unit."wsmaxxlog.war".WeldStartService: org.jboss.msc.service.StartEx ception in service jboss.deployment.unit."wsmaxxlog.war".WeldStartService: Failed to start service at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1936) [jboss-msc-1.1.5.Final-redhat-1.jar:1.1.5.Final-redhat-1] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_65] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_65] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_65] Caused by: org.jboss.weld.exceptions.DeploymentException: Exception List with 38 exceptions: Exception 0 : org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type [Result] with qualifiers [@Default] at injection point [[parameter 2] of [constructor] @Inject public br.com.caelum.vraptor.view.DefaultStatus(HttpServletResponse, Result, Configuration, Proxifier, Router)]. Possible dependencies [[Managed Bean [class br.com.caelum.vraptor.util.test.MockResult] with qualifiers [@Default @Any], Managed Bean [class br.com.caelum.vraptor.core.DefaultResult] with qualifiers [@Default @Any], Managed Bean [class br.com.caelum.vraptor.util.test.MockSerializ ationResult] with qualifiers [@Default @Any], Managed Bean [class br.com.caelum.vraptor.util.test.MockHttpResult] with qualifiers [@Default @Any]]] at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:318) at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:284) at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:147) at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:167) at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:386) at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371) at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:379) at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:64) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1980) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1913) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

Ola EdgarLeal,
esta dando erro de ambiguous dependencies, talvez você esteja com mais de uma versão do weld no classpath, no Vraptor 4 ele utiliza weld 2.2, da uma verificada nisso, usa o maven? esta rodando em um servlet container ou em um JavaEE full?

1 curtida

Obrigado pela ajuda. Este problema foi solucionado.

Inicialmente havia copiado as dependências do blackproject do vraptor4 para o maven, mas estou utilizando o JBoss e esqueci que o weld é um modulo ja distribuído com o JBoss.

Para solucionar modifiquei as dependências do weld para “provided”:

`

org.jboss.weld.servlet
weld-servlet-core
${weld.version}
provided

	<dependency>
		<groupId>org.jboss.weld</groupId>
		<artifactId>weld-core-impl</artifactId>
		<version>${weld.version}</version>
		<scope>provided</scope>
	</dependency> 

`

1 curtida