Hibernate (NoClassDefFoundError)

8 respostas
passos

Estou testando o exemplo citado no artigo sobre o hibernate e estou tomando o seguinte erro ao tentar executar o mesmo:

Exception in thread “main” java.lang.NoClassDefFoundError: Testando

Todos os arquivos estão no mesmo diretorio. Meu arquivos com as configuações do banco chama-se hibernate.properties e como ultima e desesperada tentativa estou passando todas as classes que estão na lib do hibernate no classpath

Alguem sabe o que pode estar faltando?

8 Respostas

leonardom

Isso acontence porque as classes do diretorio atual não estão no seu classpath. Verifique se no seu classpath contem .; (ponto ponto-virgula) case seu sistema seja windows ou .: (ponto dois-pontos) no linux.

passos

Aparentemente resolveu um problema porem agora criei outro :slight_smile:

java.lang.NullPointerException
at ClienteDAO.insert(ClienteDAO.java:37)

Session session = factory.openSession();

O meu objeto factory foi criado no construtor da classe da seguinte forma:

public ClienteDAO() throws Exception {
	Configuration cfg = new Configuration();
	cfg .addClass(Cliente.class);
	SessionFactory factory = cfg.buildSessionFactory();
}
ricardolecheta

vc criou a SessionFactory como variavel local :smiley:

passos
Exception in thread main java.lang.NoClassDefFoundError: javax/transaction/Synchronization

at net.sf.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:312)

at net.sf.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:325)

at net.sf.hibernate.impl.SessionFactoryImpl.openSession(SessionFactoryImpl.java:333)

at ClienteDAO.insert(ClienteDAO.java:30)

at Testando.main(Testando.java:23)

Estou esquecendo de colocar alguma lib no classpath? Atualmente estou colocando:

  • cglib-2.0-rc2.jar
  • commons-collections-2.1.jar
  • commons-lang-1.0.1.jar
  • commons-logging-1.0.3.jar
  • dom4j-1.4.jar
  • ehcache-0.6.jar
  • hibernate2.jar
  • mysql.jar
passos

Alguem sabe o que ainda está faltando?

jlbiagi

Tive o mesmo problema e acabei de resolver (aparentemente). :smiley:

Cara, a classe javax.transaction.Synchronization, faz parte da JTA (Java Transaction API).

Baixe a JTA Spec 1.0.1 aqui.

Não sei se é exatamente isso que estava errado, mas baixei, cloquei na minha aplicação (usando IDE, ou cloque o .jar na classpath) e deu certo!!! :lol:

Abraços.

Daniel_Quirino_Olive

Se não estivber enganado, o Hibernate 2.X vem com um arquivo chamado jta.jar.

passos

Finalmente vi o hibernate funcionar, ao menos dando um insert e um delete no banco :slight_smile: Muito interessantes.

Passarei a estudar como fazer consultar etc… com ele…

Obrigado pela ajuda!

Criado 1 de maio de 2004
Ultima resposta 22 de mai. de 2004
Respostas 8
Participantes 5