Falha ao tentar usar o Vraptor

22 respostas
T

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?

22 Respostas

L

Qual versão você está usando?

algum motivo especial pra estar usando o spring?

J

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?

L

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

J

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

L

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

J

Sim, é pelo Eclipse.

L

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.

J

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

L

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.

J

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]

L

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.

J

Onde baixo o Guice?

L

ele já vem dentro do blank project do VRaptor…

vc usou o que pra criar os projetos?

J

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.
L

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.

J

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

L

Dá uma olhada na url.

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

J

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?

L

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.

J

Lucas, trocando a url por dentro do Eclipse deu certo e o programa rodou corretamente.
Valeu a ajuda!

J

Estou tendo o mesmo problema tenho um projeto que esta utilizando VRaptor-3.4.1 agora atualizei para 3.5.4 estou tomando esta exception lembrando que estou utilizando o spring.

tebosoftware:
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?

D

@pessoal,
Descobri a solução é este problema: é que a Aplicação precisa ter a dependência javax.inject-1.jar(no classpath)!!
@Lucas, que tal colocar como dependência obrigatória no (.POM do) vRaptor3.5.5 (enfim: nas 3.5.x ou nas próximas que for possível)??!

Criado 28 de dezembro de 2013
Ultima resposta 22 de mai. de 2018
Respostas 22
Participantes 5