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?
coloque esse arquivo na pasta src (ou src/main/resources)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{HH:mm:ss,SSS} %5p [%-20c{1}] %m%n"/>
</layout>
</appender>
<category name="br.com.caelum.vraptor">
<priority value="INFO" />
<appender-ref ref="stdout" />
</category>
<category name="org.springframework">
<priority value="INFO" />
<appender-ref ref="stdout" />
</category>
This file has been truncated. show original
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.
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:
criei um novo projeto Dynamic Web Project, dando-lhe o nome de livraria;
Selecionei o Tomcat 7.0.50, selecionando o Dynamic web module version como 3.0 e cliquei em Finish;
Abri o zip do VRaptor e copiei o vraptor-3.5.3.jar para a pasta WebContent/WEB-INF/lib do projeto;
Depois copiei todos os jars da pasta /lib do VRaptor para a pasta WebContent/WEB-INF/lib do projeto e atualizei o projeto (F5);
Criei uma classe chamada Mundo.class como pedido no tópico 2.4.
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.