[Java para Web com JSF e JPA] java.lang.NullPointerException - Livros - Editora Casa do Código
[Java para Web com JSF e JPA] java.lang.NullPointerException
jsf-jpa
fred_jr10 Junho 30, 2016, 9:56pm #1
E a sucessão de erros continua… Parece que estou amaldiçoado… kkk… Bem, o que está aparecendo agora após a compilação do projeto é o famoso java.lang.NullPointerException. O assunto é abordado na página 53 do livro, e sei que é causado por uma referência a um atributo ou objeto que não existe. Segui as recomendações do livro, e nada. Ao verificar o Stack Trace, o erro é causado no arquivo JPAUtil.java (linha 33: em = JPAUtil.factory.createEntityManager();), e no arquivo LivroBean.java (linha 37: EntityManager em = JPAUtil.getEntityManager();).
Acabaram-se as minhas ideias… Mais uma vez preciso da ajuda de vocês…
O projeto está no GitHub: https://github.com/fredjr10/livraria-espirita
Obrigado pela ajuda e pela paciência!
gracyane_oliveira Junho 30, 2016, 10:43pm #2
O seu projeto tem dois arquivos de configuração para o hibernate que é o hibernate.cfg.xml e o persistence.xml. Acho que isso pode estar dando conflito. Acho que por padrão ele está pegando o arquivo hibernate.cfg.xml para configurações do banco, por isso ele está dando nullpoint, pois não encontra "biblioteca" de
Persistence.createEntityManagerFactory("biblioteca");
fred_jr10 Junho 30, 2016, 11:14pm #3
Olá Gracyane.
Eliminei o arquivo hibernate.cfg.xml e mantive o padrão do livros, que é o persistence.xml. Não funcionou. O erro continua ocorrendo.
gracyane_oliveira Junho 30, 2016, 11:32pm #4
Eu utilizo o Eclipse em meus projetos. Na hierarquia de pacotes eu coloco o arquivo persistence.xml no seguinte caminho:
Até onde eu sei esse é o local padrão deste arquivo. É preciso criar o diretório META-INF dentro de resources e dentro de META-INF vai o persistence.xml
gracyane_oliveira Junho 30, 2016, 11:42pm #5
Vi o seu projeto no github e o arquivo persistence.xml está em um diretório diferente do padrão usado e que costumo utilizar em meus projetos.
fred_jr10 Julho 1, 2016, 12:25am #6
Eu uso o NetBeans, atualmente na versão 8.1. Por padrão ele cria os arquivos de configuração na estrutura de projeto como foi postado no GitHub. Mesmo assim fiz as alterações sugeridas, e as mesmas não surtiram o efeito desejado.
danilo.s.andrade Julho 4, 2016, 10:53pm #7
vc ja olho no conteúdo do seu war se o persistence.xml esta na dentro da pasta META-INF
webapp/classes/META-INF/persistence.xml
fred_jr10 Julho 7, 2016, 1:07am #8
Olà Danilo.
O arquivo está na pasta certa, conforme você mencionou.
ranieredelima2 Julho 7, 2016, 12:52pm #9
Olá @fred_jr10, eu olhei o seu projeto no Github, e acho que identifiquei seu problema. No persistence.xml, está faltando as informações para realizar a conexão com o banco, como a url do banco de dados, usuario e senha para autentificação. Pois os arquivos persistence.xml e o hibernate.cfg.xml apesar de serem utilizados para a mesma função, são arquivos diferentes que não se complementam, é tanto que na classe JPAUtil, você chama o persistence.xml .
Adicione as linhas de código:
<property name="javax.persistence.jdbc.url"  value="jdbc:mysql://localhost:3306/biblioteca" />
<property name="javax.persistence.jdbc.user"  value="SeuUsuario" />
<property name="javax.persistence.jdbc.password"  value="SuaSenha" />
Testa e me informa se deu certo.
fred_jr10 Julho 7, 2016, 9:50pm #10
Fiz as alterações, mas o erro continua. O( stack trace informa que o problema está em Biblioteca.JPAUtil.getEntityManager(JPAUtil.java:33) e em Biblioteca.LivroBean.salva(LivroBean.java:37), mas não percebi o que pode estar errado.