Erro ao setar "Persistence.createEntityManagerFactory"

9 respostas
newbcc

Olá pessoal,

estou fazendo um teste com JPA, porém, ao executar a aplicação está sendo exibida a seguinte mensagem:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/LogManager at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:103) at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151) at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:107) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34) at services.PersonServiceFactory.create(PersonServiceFactory.java:11) at introduction.MainClass.<init>(MainClass.java:31) at introduction.MainClass.main(MainClass.java:14) Caused by: java.lang.ClassNotFoundException: org.apache.log4j.LogManager at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 10 more

Debugando, a linha que está fornecendo esse erro é a seguinte:

Segue o meu “persistence.xml”:

<persistence 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_1_0.xsd"
	version="1.0">
	<persistence-unit name="jpa_intro" transaction-type="RESOURCE_LOCAL">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<properties>
			<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
			<property name="hibernate.connection.username" value="user" />
			<property name="hibernate.connection.password" value="senha" />
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:@127.0.0.1:1521:xe" />
			<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect" />
		</properties>
	</persistence-unit>
</persistence>

Alguma dica??

Obrigado.

9 Respostas

Mero_Aprendiz

Olá…
O log4j que está no seu classpath está na versão correta?
Só pra testar, baixa a mais nova e subtitui.

:wink:
[]'s
JL

newbcc

Fala cara, então estou usando o da seguinte versão:

hibernate-annotations-3.4.0.GA

Esta é a versão mais atual.

Vlw pela dica…

Mero_Aprendiz

newbcc:
Fala cara, então estou usando o da seguinte versão:

hibernate-annotations-3.4.0.GA

Esta é a versão mais atual.

Vlw pela dica…

Então…
Não estou falando da vesão do Hibenate Annotations, mas sim do Log4J.
Por exemplo, aqui estou utilizando o log4j-1.2.11.jar
Dá uma olhadinha no seu ai.

[]'s
JL

newbcc

Opa, me desculpe cara não sabia dessa.

Então, vou baixar este jar, porque parece que ele não vem com os pacotes do Hibernate, certo!?

PS: vou procurar imediatamente este para baixar.

Abs.

newbcc

Agora o erro que está aparecendo é o seguinte:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
 log4j:WARN Please initialize the log4j system properly.

Continuarei pesquisando.

Abs.

Mero_Aprendiz

newbcc:
Agora o erro que está aparecendo é o seguinte:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
 log4j:WARN Please initialize the log4j system properly.

Continuarei pesquisando.

Abs.

Dá uma pesquisada sobre log4j.properties
Continua não gravando ou dando erro?

newbcc

Opa cara, então continua dando erro.

Possa ser que ajude, então segue as minhas classes para uma possível análise:

Minha Entity

package entities;
 
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
 
@Entity
@Table(name="people")
@NamedQuery(name="getListOfPeople", query="select p from Person p")
public class Person {
 
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String address;
    private String city;
    
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}

 
	public void setAddress(String address) {
		this.address = address;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
        
}

Minnha Entity Manager

package services;

import java.util.List;
import javax.persistence.EntityManager;
import entities.Person;

public class PersonService {

    private EntityManager em;
    /**
     * Constructor
     */
    public PersonService(EntityManager em) {
        this.em = em;
    }
 
    public void persistPerson(Person person) {
    	
        em.getTransaction().begin();
        
        try {
        	
            em.persist(person);
            em.getTransaction().commit();
            
            System.out.println("Person has been inserted successfully");
            
        } catch (RuntimeException re) {
        	
            System.err.println("Error inserting the person...\n" + re.getStackTrace());
            
            em.getTransaction().rollback();
        }
    }
 
    @SuppressWarnings("unchecked")
    public List getListOfPeople() {
    	
        return em.createNamedQuery("getListOfPeople").getResultList();
    }
}

Minha Entity Manager Factory

package services;

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

public class PersonServiceFactory {

    public static PersonService create() {
    	
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa_intro");
        EntityManager em = emf.createEntityManager();
        PersonService personService = new PersonService(em);
        
        return personService;
    }
}

Minha Principal

package introduction;

import services.PersonService;
import services.PersonServiceFactory;
import entities.Person;

public class MainClass {
	
    private Person person;
    private PersonService personService;
 
    public static void main(String args[]) {
    	
        MainClass main = new MainClass();
        
        main.insert();
}

    /**
     * Default Constructor
     */
    public MainClass() {
    	
        personService = PersonServiceFactory.create();
    }

    private void insert( ) {

        person = new Person();

        person.setName( "TESTE" );
        person.setAddress( "AQ TESTE" );
        person.setCity( "SANTA CATARINA" );
        
        personService.persistPerson( person );
    }
}

Abs.

Mero_Aprendiz

E no log?
Mostra algo?

Outra:
O nome das colunas na tabela é o mesmo do nome dos atributos?

newbcc

Sim, o nome dos atributos é o mesmo nome das colunas na tabela.

No log exibe àquela última mensagem que postei.

Possa ser que o problema seja com versões dos ‘jars’, porém, acredito estar usando a mais recente.

Abs, vlw.

Criado 27 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 9
Participantes 2