Erro ao setar "Persistence.createEntityManagerFactory"

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.

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

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…

[quote=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…[/quote]

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

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.

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.

[quote=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.[/quote]

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

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.

E no log?
Mostra algo?

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

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.