Jpa erro:java.lang.NullPointerException

Boa tarde,

Pessoal, to com um problema ao tentar executar um programa para teste, um simples Projeto apenas
para testar JPA , Inclusive é aquele do Blog do Edson Gonsalves
fiz tudo igual mais o erro java.lang.NullPointerException ocorre e o projeto ele não tem qse nada
eu ja nem sei o que olhar.

[code]
public static void main(String[] args) {
// TODO Auto-generated method stub

	EntityManagerFactory emf = Persistence.createEntityManagerFactory("JpaNaPratica");
	EntityManager em = emf.createEntityManager();
	em.close();
	emf.close();
	[/code]

O erro ocorre justamente na linha EntityManager em = emf.createEntityManager();
eu ja conferi tudo DRIVE do Postgre, as livrarias do EclipseLink…
será que alguem sabe o que pode estar ocorrendo?

[EL Finest]: 2011-06-21 13:47:27.28--ServerSession(12115735)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.user; value=postgres
[EL Finest]: 2011-06-21 13:47:27.28--ServerSession(12115735)--Thread(Thread[main,5,main])--property=javax.persistence.jdbc.password; value=xxxxxx
Exception in thread "main" javax.persistence.PersistenceException: java.lang.NullPointerException
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:422)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:185)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:242)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:230)[EL Severe]: 2011-06-21 13:47:29.468--ServerSession(12115735)--Thread(Thread[main,5,main])--java.lang.NullPointerException
	at java.util.ResourceBundle.getBundle(ResourceBundle.java:950)
	at org.eclipse.persistence.exceptions.i18n.ExceptionMessageGenerator.buildMessage(ExceptionMessageGenerator.java:47)
	at org.eclipse.persistence.exceptions.ValidationException.errorDecryptingPassword(ValidationException.java:842)
	at org.eclipse.persistence.internal.security.JCEEncryptor.decryptPassword(JCEEncryptor.java:124)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateLogins(EntityManagerSetupImpl.java:1299)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.updateServerSession(EntityManagerSetupImpl.java:1589)
	at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:377)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:185)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:242)
	at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:230)
	at br.com.dominio.teste.TesteDaJpa.main(TesteDaJpa.java:16)

Vc criou corretamente o arquivo persistence.xml?
JpaNaPratica é o nome declarado no seu persistence?

[]'s

Olá Tiago boa tarde

Sim , quer dizer na verdade nem tem o que fazer neste arquivo o Eclipse faz qse tudo
mais vou postar ele aqui para o caso de duvida

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="JpaNaPratica" transaction-type="RESOURCE_LOCAL">
		<class>br.com.dominio.entidades.Status</class>
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://192.168.0.7:5432/contatos"/>
			<property name="javax.persistence.jdbc.user" value="postgres"/>
			<property name="javax.persistence.jdbc.password" value="m4st5r@2000"/>
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
			<property name="eclipselink.logging.level" value="ALL"/>
		</properties>
	</persistence-unit>
</persistence>

1º. Seu arquivo persistence.xml esta dentro de uma pasta META-INF no seu projeto? Creio q seja necessario que esteja, ja tive problemas em um projeto uma vez q o arquivo não se encontrava nesta pasta, mas ñ posso garantir que isto seja uma regra mas vc pode verificar.

2º Como vc não esta usando nenhum Application Server (jboss / glassfish / …) talves seja necessário vc indicar qual o seu provedor de persistencia, segue a linha da declaração usando o hibernate, mas vc acha facil na internet um para o eclipseLink:

Bom isso é o q me vem a cabeça por agora.

[]'s

Thiago meu prezado, … sobre o local onde esta o Persistence ele esta dentro do scr\META-INF isto a propria IDE ja arruma
pra gente.
Realmente não estou em um Container, nem um Servidor de Aplicações, se bem … que na verdade
eu venho de um so que como o outro projeto usando o Tomcat dá o mesmo problema, resolvi fazer
um novo projeto um projeto JPA so pra testar, agora o incrive é que o mesmo projeto no NetBeans
não da erro,

Meu projeto mesmo é um envolvendo JSF 2, JPA , Spring 3, so que qdo não da erro na JPA, da Erro no Spring
qdo eu resolvo fazer um projeto so para a JPA ele também da erro, ja no NetBeans não da erro no JPA
eu consigo testar sem problema mais qdo eu coloco o Spring ele não sai do canto…
cara … aprender Java realmente é dificil, quer dizer dificil é fazer funcionar porque os tutoriais não.
Desculpe parece um desabafo é que eu realmente não sou programador Java ( tenho a intenção sim )
mais a meses que venho tentando…

rlira, tranquilo sobre o “desabafo” na realidade sempre q a gente se envolve com algo novo temos a tendencia de dizer q é dificil, isso é normal, mas se vc parar pra pensar, quantos anos ficamos aprendendo a falar o nosso idioma (do periodo da pré escola até agora pra ser sincero) e mesmo assim não o compreendemos por completo? Uma linguagem de programação pode ser comparada a um idioma, devemos sempre estudar para aprendermos mais e pelo menos sermos auto suficientes em grande parte, pois o todo nunca vamos alcançar. Por isso não desanime!

Voltando ao nosso problema, quando me referi a vc usar um servidor é com relação a definir o persistenceProvider, que no seu post q exibe o persistenceUnit esta declaração não aparece. Vc ja testou isso?

[]'s

Thiago vou adicionar a linha identificando o provedor.
e depois retorno.

Valeu :slight_smile:

Bem segundo eu li na JPA 2 não é necessario discriminar o provedor no persistence.xml
mais eu inseri a linha

org.eclipse.persistence.jpa.PersistenceProvider

mais o erro continua

Legal isso da JPA2, preciso testar ela.
Cara vi outra coisa aqui no seu persistence, não ta dizendo qual é o dialeto do bd usado, tenta adicionar a seguinte linha ao seu arquivo junto com as outras propriedades.

Mas vc tem q procurar o property da JPA pro dialeto ja q vc não ta usando o hibernate.

[]'s

Então procurei, procurei, procurei e acho que não é necessario especificar esta propriedade

é o que eu entendi olhando o site

http://wiki.eclipse.org/EclipseLink/Examples/JPA/Migration/JBoss

Bem sera que é algum bug do Eclipse? porque eu testei este pequeno projeto no NetBeans
e ali o teste não apresenta erro algum, na verdade fui um pouco alem, fiz uma consulta

So sendo um bug do Eclipse Helios

Depois vou testar criar um exemplo simples com JPA 2 e mapear so uma classe e fazer um crud, mas so vou poder ver isso amanha hj to corrido aqui no serviço, eu uso sempre o eclipse. Não vou me preocupar com outros frameworks, apenas um main class como vc estava fazendo pra ver se funciona legal, dai posto depois pra vc a minha conclusão. Se quiser passar o ambiente q vc esta testando fica mais facil pra mim.

[]'s

Cara agradeço muito, então… veja o projeto que estou fazendo é um paralelo justamente por meu projeto não estar indo a frente
um com JSF 2, JPA ( EclipseLink ), Spring 3 ( para ID ), usando o PostgreSql no Tomcat. como não rolou entao eu
decidi dividir para encontrar o erro.

Olhando o blog do Edson Gonçalves ele tem um post que diz JPA 2.0 na pratica a parte 1 e 2
http://www.edsongoncalves.com.br/2010/01/25/jpa-2-0-na-pratica-parte-1/

então é aquilo que tá lá o que muda pra mim é que tô usando postgre 8.2 so isto
mais é um projeto simples que so tem uma classe que é a de teste.

“Na caixa de diálogo New JPA Project, digite o nome do projeto em Project name. No exemplo que usaremos será chamado de JpaNaPratica. Em Configuration, mantenha em Minimal JPA 2.0 Configuration. Clique no botão Next para prosseguir.”

ou seja é um projeto que pra ler demora mais do que fazer muito simples e por ser simples cara não tem nem onde eu procurar o erro, rsrsrs

Como prometi fiz um teste aqui usando o eclipse helios, td funcionou legal cara, vou relatar os passos que segui:

  • Criei um projeto java;
  • Criei um pacote e adicionei uma classe Produto com id e nome apenas (ñ precisa muito pra testar né…rsrsr)
  • Criei uma pasta lib onde adicionei meu jar do driver jdbc (postgresql)
  • Adicionei o jar acima citado ao classpath do projeto
  • Baixei o pacote do eclipseLink pelo proprio eclipse, ele baixa algumas libs a mais, mas creio q só precise da eclipseLink.jar e da javax.persistence_2.0.3.
  • Criei uma classe main e inseri um produto.

O que percebi de diferente foi somente a sintaxe usada no persistence.xml na parte da configuração.

Td funcionou certinho sem problemas, se quiser me passa teu email pessoal q compacto o projeto e te envio pra vc testar ai. Não cheguei a testar com um projeto JSF2, pois pelo q percebi seu problema tinha sido apenas com eclipse e JPA2, certo?

[]'s

Olá Thiago tudo bem?

Então, o que eu notei de diferente é que vc menciona que na pasta Lib vc colocou o Drive do Postgre
e na linha seguinte vc menciona Adicionei o jar ao classpath do projeto

bem eu fiz exatamente como consta no blog do Edson Gonçalves

Eu criei Bibliotecas de usuario onde cada uma delas faz referencia aos Jar´s
ou seja Biblioteca para o EclipseLink, outra para o Postgre

Há tentei também fazer o projeto usando o Hibernate 3.6 mais deu erro também
so que pelo que li o Hibernate tem que ter os jar´s para o loging ( SLF4 )
e etc… http://blog.caelum.com.br/as-dependencias-do-hibernate-3-5/

Meu E-mail é robsonlira_pe@hotmail.com

E cara, muito obrigado ai por se dispor a tentar me ajudar.
Valeu muito Thiago.

Cara vc falou q criou as bibliotecas do usuario, mas vc adicionou essas bibliotecas do usuario ao classpath do seu projeto?

Mando pra vc o projeto por email na hora do almoço q eu esqueci o meu notebook em casa, blz?

[]'s

Thiago bom dia.

Meu nobre achei o “Problema” cara vc ontem me perguntou “mais vc adicionou essas bibliotecas do usuario ao classpath do seu projeto?” bem eu não achei que precisava na verdade em nenhum Tutorial ou Video que eu peguei eu vi isto, alias minto eu vi
um video do Ivan Saldadori no You Tube no qual ele cria as bibliotecas de usuario para o EclipseLink e no momento do teste
ele insere na pasta Lib o Jar do Banco de dados.
Cara este tempo todo o meu projeto com JSF Spring 3 e JPA com certeza não decolou por conta de Biblioteca de Usuario, pra que
então serve isto se eu tenho que pegar os Jar´s e colocar na pasta Lib?
O seu projeto funcionou perfeito apos eu ter Importado ele no Eclipse mais, qdo eu tava procurando o que o seu projeto difere do
meu eu resolvi colocar no seu a biblioteca de usuario, ao executar deu erro, eu removi a biblioteca de usuario e executei novamente
e funcionou ai eu percebi que Biblioteca de usuario é e sempre foi o causador do meu problema e nenhuma mensagem de erro
evidenciava isto, há e não é problema de maquina nem de SO porque aqui no trabalho da o mesmo erro.

Bem eu descobri o “Problema” muito Obrigado, so queria agora entender pra que Biblioteca de usuario, eu so estou com o meu
projeto parado porque este tempo todo segui Tutoriais.

Mais valeu muito ai Thiago.

Bom dia Robson, cara vc ta quase la, na verdade a biblioteca do usuario vc não precisa colocar ela na pasta lib do seu projeto, apenas referencia-la no seu classpath.

Bons estudos!

[]'s