GWT + HIBERNATE. Tá dificil!

Já tentei de tudo, já vasculhei a internet a procura da solução, mas nada ainda. Alguém poderia me ajudar?

com.google.gwt.user.server.rpc.UnexpectedException: Service method ‘public abstract java.util.List amaral.hibernategwt.client.GreetingService.getPersons()’ threw an unexpected exception: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory


Minha classe Person:

package amaral.hibernategwt.shared;


import java.io.*;
import java.util.*;

import javax.persistence.*;

@Entity
@Table(name = "public.person")
public class Person
    implements Serializable {

    private static final long serialVersionUID = 8797358836729244169L;

    public Person() {
	super();
    }
    
    public Person(int id, String nome, Date nascimento) {
	super();
	this.id = id;
	this.nome = nome;
	this.nascimento = nascimento;
    }
    
    @Id
    @Column(name = "id", nullable=false)
    private int               id;

    @Column(name="nome", nullable=false)
    private String            nome;

    @Column(name="nascimento", nullable=false)
    private Date              nascimento;

    public final int getId() {
	return id;
    }

...
getter e setters
...

}

Minha classe HibernateUtil:

package amaral.hibernategwt.server;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.*;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
	try {
	    return new Configuration().configure().buildSessionFactory();
	} catch (Exception e) {
	    System.out.println("SessionFactory creation failed" + e);
	    throw new ExceptionInInitializerError(e);
	}
    }

    public static SessionFactory getSessionFactory() {
	return sessionFactory;
    }
}

Minha classe PersonService:

package amaral.hibernategwt.server;

import java.util.*;

import org.hibernate.*;

import amaral.hibernategwt.shared.*;
import amaral.hibernategwt.util.*;

public class PersonService {

    public static List<Person> getPersons() {
	Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	Transaction trans = session.getTransaction();
	trans.begin();
	List<Person> persons = session.createCriteria(Person.class).list();
	trans.commit();
	return persons;
    }

    public static void addPessoa(Person person) {
	Session session = HibernateUtil.getSessionFactory().getCurrentSession();
	Transaction trans = session.getTransaction();
	trans.begin();
	session.save(person);
	trans.commit();
    }

}

Minha classe testePerson:

package amaral.hibernategwt.client;

import java.util.*;

import amaral.hibernategwt.server.*;
import amaral.hibernategwt.shared.*;


public class testePerson {

    public static void main(String[] args) {
	//*/
	List<Person> persons = PersonService.getPersons();
	for (Person person : persons) {
	    System.out.println(person);
	}
	//*/
	//addPessoa(new Person(3, "Teste", new Date()));
    }

}

Na minha classe de serviço remoto o método getPersons que não funciona e gera o erro:

    public List<Person> getPersons() {
	List<Person> persons = PersonService.getPersons();
	
	//List<Person> persons = new ArrayList<Person>();
	//persons.add(new Person(4, "Fulano", new Date()));
	
	return persons;
    }

Minha classe hibernate.gwt.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory name="testePerson">
		<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
		<property name="connection.username">*****</property>
		<property name="connection.password">*****</property>
		<property name="connection.url">jdbc:postgresql://****</property>
		<property name="connection.driver_class">org.postgresql.Driver</property>
		<property name="show_sql">false</property>
		<property name="query.substitutions">yes 'Y', no 'N'</property>
		<property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
		<property name="cache.use_query_cache">false</property>
		<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
		<property name="hibernate.current_session_context_class">thread</property>
		<property name="generateDdl">true</property>
		<mapping class="amaral.hibernategwt.shared.Person"/>  
	</session-factory>
</hibernate-configuration>

As libs que estou usando são as seguintes:


O erro exibido no console do eclipse é o seguinte:

Olá 5leipn1r, cara tenta remover os seguintes jars.

9,6K 2011-01-07 17:21 slf4j-log4j12-1.6.0.jar 334K 2009-03-27 17:33 log4j-1.2.14.jar
Se não me engano houve uma mudança na configuração do slf4j nessas novas versões. Qualquer coisa dá uma pesquisada sobre a configuração do slf4j na documentação.

Tentei o que o Andriel sugeriu mas nao resolveu o problema. Alguem mais tem aotima sugestão? Valew!

5leipn1r,

E o erro apresentado na stacktrace continuou o mesmo?

Sim, o stacktrace continua o mesmo.