newbcc
Fevereiro 27, 2009, 10:58am
#1
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.
[]'s
JL
newbcc
Fevereiro 27, 2009, 11:33am
#3
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
newbcc
Fevereiro 27, 2009, 11:41am
#5
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
Fevereiro 27, 2009, 12:45pm
#6
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?
newbcc
Fevereiro 27, 2009, 1:07pm
#8
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?
newbcc
Fevereiro 27, 2009, 3:33pm
#10
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.