Falha ao tentar usar o Vraptor

Bom dia pessoal, comecei a estudar o vraptor, baixei o projeto em branco do site e tentei iniciar ele. mas ao rodar da o erro abaixo:

java.lang.NullPointerException br.com.caelum.vraptor.core.DefaultResult.include(DefaultResult.java:82) br.com.tebosoftware.controller.IndexController.index(IndexController.java:28) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93) br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)

alguém sabe o que é isso?

Qual versão você está usando?

algum motivo especial pra estar usando o spring?

Também comecei a estudar agora o VRaptor na versão 3.5.3 e ao executar o exemplo da página 6 do seu livro “VRaptor Desenvolvimento Ágil para Web com Java” da Editora Casa do Código, foi-me apresentada a mesma falha.
O que será que está causando esse erro?

qual servidor vc tá usando? como vc está fazendo o deploy?

Estou usando o Tomcat como sugerido no livro (já que sou iniciante, rsrs). A versão dele é o 7.0.50.

como vc tá fazendo o deploy? é pelo eclipse?

Sim, é pelo Eclipse.

coloque esse arquivo na pasta src (ou src/main/resources)

e mude dentro dele o nível de log do VRaptor de INFO pra DEBUG.

Reinicie o servidor e veja se aparece algo no log que indique um erro. Qualquer coisa posta aqui o log e o controller que vc tá usando.

Lucas, fiz o que me pediu mas continua com problemas. Segue anexa a tela com a mensagem apresentada.

Dá uma olhada no endereço (URL) que ele colocou.

O padrão do VRaptor é usar o nome da classe sem controller e o nome do método.

Ou seja, seria algo como:

http://localhost:8080/livraria/mundo/ola

Acesse isso num browser do seu computador.

Lucas, voltei à estaca zero.

Voltou da dar a mensagem de HTTP Status 500:
[b]HTTP Status 500 -

type Exception report

message

description The server encountered an internal error that prevented it from fulfilling this request.

exception

java.lang.NullPointerException
br.com.caelum.vraptor.core.DefaultResult.use(DefaultResult.java:69)
br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:93)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:99)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.50 logs.

Apache Tomcat/7.0.50[/b]

Você precisa mesmo usar o Spring?

Tenta remover os jars do Spring e colocar os do Guice… acho que existe um bug da versão 3.5.3 do VRaptor com o Spring.

Onde baixo o Guice?

ele já vem dentro do blank project do VRaptor…

vc usou o que pra criar os projetos?

Segui à risca os passos apresentados para criar o blank project, que deu certinho.
O que está com problema eu fiz como na página 6 do livro:

  1. criei um novo projeto Dynamic Web Project, dando-lhe o nome de livraria;
  2. Selecionei o Tomcat 7.0.50, selecionando o Dynamic web module version como 3.0 e cliquei em Finish;
  3. Abri o zip do VRaptor e copiei o vraptor-3.5.3.jar para a pasta WebContent/WEB-INF/lib do projeto;
  4. Depois copiei todos os jars da pasta /lib do VRaptor para a pasta WebContent/WEB-INF/lib do projeto e atualizei o projeto (F5);
  5. Criei uma classe chamada Mundo.class como pedido no tópico 2.4.
  6. Atualizei o projeto, subi o servidor e rodei a aplicação, aí dá o problema.

O problema é que o zip de distribuição do VRaptor passou a ter todos os jars de dependência, mesmo as opcionais…

se vc baixar o blank-project e usar todos os jars que estão em WEB-INF/lib dele vai funcionar.

Lucas, fiz a inclusão dos .jar do blank project mas não deu certo.
Segue anexa a tela com a mensagem de erro.

Dá uma olhada na url.

deveria ser algo como http://localhost:8080/livraria/mundo/ola

Exatamente, Lucas.
Se estou usando o Eclipse, por que ele não funciona na url corretamente?
A url apresentada no livro é http://localhost:8080/livraria/mundo/ola (o que pela lógica e proposta do VRaptor é totalmante coerente) e no eclipse ele usa http://localhost:8080/Livraria/WEB-INF/classes/Mundo.java?
Qual o configuração que me está faltando pra resolver isso?

O que acontece é que se vc for a partir de uma classe e der um Run As > Run on Server ele vai tentar acessar a classe direto.

O eclipse não conhece as convenções do VRaptor, por isso ele faz isso. Em todo caso, é só trocar a url por dentro do eclipse, que vai funcionar.