[RESOLVIDO] Como configurar VRaptor + GuiceProvider

Pessoal, boa noite!

Não estou conseguindo utilizar o vraptor em conjunto com o Guice. Ja testei com PicoContainer e com o Spring e tudo funciona perfeitamente, porém com Guice é mostrado o seguinte erro:

23/06/2012 00:30:45 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files (x86)/Java/jre6/bin/client;C:/Program Files (x86)/Java/jre6/bin;C:/Program Files (x86)/Java/jre6/lib/i386;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Java\jdk1.6.0_33\bin;X:\Ambiente\eclipse;;.
23/06/2012 00:30:46 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:movy' did not find a matching property.
23/06/2012 00:30:46 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
23/06/2012 00:30:46 org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
23/06/2012 00:30:46 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 793 ms
23/06/2012 00:30:46 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
23/06/2012 00:30:46 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.28
log4j:WARN No appenders could be found for logger (br.com.caelum.vraptor.config.BasicConfiguration).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
23/06/2012 00:30:48 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter vraptor
com.google.inject.CreationException: Guice creation errors:

1) No implementation for br.com.caelum.iogi.spi.DependencyProvider was bound.
  while locating br.com.caelum.iogi.spi.DependencyProvider
    for parameter 1 at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.<init>(VRaptorInstantiator.java:58)
  at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:141)

2) No implementation for br.com.caelum.iogi.spi.ParameterNamesProvider was bound.
  while locating br.com.caelum.iogi.spi.ParameterNamesProvider
    for parameter 3 at br.com.caelum.vraptor.http.iogi.VRaptorInstantiator.<init>(VRaptorInstantiator.java:58)
  at br.com.caelum.vraptor.ioc.guice.GuiceComponentRegistry.bindToConstructor(GuiceComponentRegistry.java:141)

2 errors
	at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:435)
	at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:154)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:106)
	at com.google.inject.Guice.createInjector(Guice.java:95)
	at com.google.inject.Guice.createInjector(Guice.java:83)
	at br.com.caelum.vraptor.ioc.guice.GuiceProvider.start(GuiceProvider.java:98)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:108)
	at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:102)
	at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:277)
	at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
	at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:382)
	at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:103)
	at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4649)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5305)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1595)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1585)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
23/06/2012 00:30:48 org.apache.catalina.core.StandardContext startInternal
GRAVE: Error filterStart
23/06/2012 00:30:48 org.apache.catalina.core.StandardContext startInternal
GRAVE: Context [/movy] startup failed due to previous errors
23/06/2012 00:30:48 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
GRAVE: The web application [/movy] appears to have started a thread named [com.google.inject.internal.util.$Finalizer] but has failed to stop it. This is very likely to create a memory leak.
23/06/2012 00:30:48 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory X:\Ambiente\apache-tomcat-7.0.28\webapps\docs
23/06/2012 00:30:48 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory X:\Ambiente\apache-tomcat-7.0.28\webapps\examples
23/06/2012 00:30:49 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: contextInitialized()
23/06/2012 00:30:49 org.apache.catalina.core.ApplicationContext log
INFO: SessionListener: contextInitialized()
23/06/2012 00:30:49 org.apache.catalina.core.ApplicationContext log
INFO: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@c2060e')
23/06/2012 00:30:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory X:\Ambiente\apache-tomcat-7.0.28\webapps\host-manager
23/06/2012 00:30:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory X:\Ambiente\apache-tomcat-7.0.28\webapps\manager
23/06/2012 00:30:49 org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory X:\Ambiente\apache-tomcat-7.0.28\webapps\ROOT
23/06/2012 00:30:49 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
23/06/2012 00:30:49 org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
23/06/2012 00:30:49 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2743 ms

Parece que não estão sendo encontradas duas classes do Guice e não sei como proceder nesse caso.

PS: Não fiz nenhuma configuração específica para o Guice no web.xml, apenas coloquei os jars na pasta WEB-INF/lib. Existe alguma outra configuração necessária para o funcionamento deste provider ?

o problema não é o guice… foi um erro do deploy da última versão do vraptor… pra corrigir, só colocar no web.xml:

<context-param>
    <param-name>br.com.caelum.vraptor.packages</param-name>
    <param-value>br.com.caelum.vraptor.http.iogi</param-value>
</context-param>

Lucas, ainda não funcionou. Quando eu adiciono o provider da JPA no web.xml, volta a ocorrer o erro relatado acima referente ao Guice.

Meu web.xml está assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>movy</display-name>
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
		<welcome-file>index.htm</welcome-file>
		<welcome-file>index.jsp</welcome-file>
		<welcome-file>default.html</welcome-file>
		<welcome-file>default.htm</welcome-file>
		<welcome-file>default.jsp</welcome-file>
	</welcome-file-list> 
	<filter>
		<filter-name>vraptor</filter-name>
		<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>vraptor</filter-name>
		<url-pattern>/*</url-pattern>
		<dispatcher>FORWARD</dispatcher>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	<context-param>
		<param-name>br.com.caelum.vraptor.encoding</param-name>
		<param-value>ISO-8859-1</param-value>
	</context-param>
	<context-param>
		<param-name>br.com.caelum.vraptor.packages</param-name>
		<param-value>br.com.caelum.vraptor.http.iogi</param-value>
	</context-param>
	<context-param>
		<param-name>br.com.caelum.vraptor.packages</param-name>
		<param-value>br.com.caelum.vraptor.util.jpa</param-value>
	</context-param>
</web-app>

Existe algum conflito do Guice com o provider da JPA ?

vc não pode ter dois parametros com o mesmo nome… o packages aceita vários pacotes, separados por vírgula:

 <context-param>  
        <param-name>br.com.caelum.vraptor.packages</param-name>  
        <param-value>br.com.caelum.vraptor.http.iogi, br.com.caelum.vraptor.util.jpa</param-value>  
    </context-param> 

Obrigado Lucas, agora sim funcionou.