Erro JPA no Windows XP

3 respostas
ronnypeterson

Estava usando JPA no linux e tá funcionando q é uma maravilha, entretanto tentei colocar o mesmo aplicativo no windows xp e aparece o seguinte erro:

Exception in thread main java.lang.NullPointerException

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createEntityManagerFactory(EntityManagerFactoryProvider.java:120)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)

at generico.persistence.BaseDao.(BaseDao.java:16)

at generico.client.ClientEstado.main(ClientEstado.java:29)

Alguém poderia me ajudar?

Desde já agradeço a atenção e colaboração de todos!

3 Respostas

root_

Bom… verifique a versão do java!
Mais se puder postar o codigo, fica melhor de entender onde seria o problema realmente…

ronnypeterson

Esse é meu arquivo xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
    <persistence-unit name="pu1">
        <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
        <class>generico.model.Estado</class>
        <properties>
            <property name="toplink.jdbc.driver" value="org.postgresql.Driver"/>
            <property name="toplink.jdbc.url" value="jdb:postgresql://200.129.157.201:5432/generico"/>
            <property name="toplink.jdbc.user" value="postgres"/>
            <property name="toplink.jdbc.password" value="654321"/>
            <property name="toplink.logging.level" value="INFO"/>
        </properties>
    </persistence-unit>
</persistence>

Esta é minha classe entity:

package generico.model;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Estado
{
	@Id
	@Column (insertable = false)
	@GeneratedValue (strategy = GenerationType.SEQUENCE, generator = "estado_id_seq")	
	private int id;
	private String sigla;
	private String nome;
	@OneToMany
	private List<Cidade> cidades;
	
	public Estado()
	{
		
	}	
        ....
}

Esta é minha classe de persistência:

package generico.persistence;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class BaseDao<T> 
{  
  private static EntityManagerFactory emf;
  private EntityManager em;

  public BaseDao() 
  {
    emf = Persistence.createEntityManagerFactory("pu1");
    em = emf.createEntityManager();
  }

  public boolean create(T obj)
  {
    em.getTransaction().begin();
    try 
    {
      em.persist(obj);
      em.getTransaction().commit();
      return true;
    }
    catch (Exception e) 
    {
      e.printStackTrace();
      em.getTransaction().rollback();
      return false;
    }
  }

E por fim minha classe Client:

public class ClientEstado 
{
	public static void main(String[] args)
	{		
		Estado estado = new Estado();
                //Atribui valores a estado
               ...

               //Persistência usando o JPA
		BaseDao<Estado> estadoDao = new BaseDao<Estado>();
		estadoDao.create(estado);
         }
}

Esse é o meu código. Vale lembrar que no linux ele tá funcionando legal. No WinXP to usando o Java 1.6.0_01

S

Seguinte:
Você deve ter o persistence.xml dentro da pasta META-INF e colocar essa pasta dentro do diretório src (raíz dos pacotes) que funciona.
Estranho não?

Abraço,
Sidarta O. S. Silva.

Criado 4 de junho de 2007
Ultima resposta 8 de nov. de 2008
Respostas 3
Participantes 3