Exception java.lang.NoClassDefFoundError

5 respostas
jeancv

Pessoal, estudo inciando meus estudos em JEE - POJOS. Ao rodar uma aplicação(TestaMapeamento) obtive o seguinte erro:

25/01/2007 22:05:19 org.hibernate.cfg.SettingsFactory buildSettings
INFO: Default entity-mode: pojo
Exception in thread "main" java.lang.NoClassDefFoundError: javax/transaction/Synchronization
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1005)
	at com.integrallis.TechConf.domain.TestaMapeamento.main(TestaMapeamento.java:20)

este é o código da class:

package com.integrallis.TechConf.domain;

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

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

public class TestaMapeamento {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File configFile = new File("/home/jean/workspace/TechConf/bin/com/integrallis/TechConf/domain/hibernate.cfg.xml");
		Configuration configuration = new Configuration().configure(configFile);
		SessionFactory factory = configuration.buildSessionFactory();
		
		Session session = null;
		Transaction tx = null;
		try{
			//cria uma conferência
			Conference conference = new Conference();
			conference.setAbstractSubmissionEndDate(new Date());
			conference.setAbstractSubmissionStartDate(new Date());
			conference.setDescription("A Test Conference");
			conference.setEndDate(new Date());
			conference.setName("TestConf 2005");
			conference.setStartDate(new Date());
			//cria alguns tópicos
			Track jseTrack = new Track();
			jseTrack.setDescription("Aprenda Java para Desktop");
			jseTrack.setSubtitle("Java Standard Edition");
			jseTrack.setTitle("JSE");
			
			Track jeeTrack = new Track();
			jeeTrack.setDescription("Aprenda Java para Empresas");
			jeeTrack.setSubtitle("Java Enterprise Edition");
			jeeTrack.setTitle("JEE");
			
			Track jmeTrack = new Track();
			jmeTrack.setDescription("Aprenda Java para Celulares");
			jmeTrack.setSubtitle("Java Micro Edition");
			jmeTrack.setTitle("JME");
			
			//adiciona os tópicos à conferência :) duvido!
			conference.addTrack(jseTrack);
			conference.addTrack(jeeTrack);
			conference.addTrack(jmeTrack);
			
			//persiste a conferência :P aí o bixo pega
			session = factory.openSession();
			tx = session.beginTransaction();
			session.persist(conference);
			tx.commit();
			
		}catch (Exception e){
			if (tx != null){
				tx.rollback();
			}
		}finally{
			session.close();
		}
		
	}

}

e este é o arquivo hibernate.cfg.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="hibernate.connection.url">
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">forumguj</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/TECHCONF</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<!--Mapeamentos -->
		<mapping resource="com/integrallis/TechConf/domain/Address.hbm.xml"/>
		<mapping resource="com/integrallis/TechConf/domain/Conference.hbm.xml"/>
		<mapping resource="com/integrallis/TechConf/domain/Track.hbm.xml"/>
		<mapping resource="com/integrallis/TechConf/domain/Venue.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Alguém manja do negócio?
Obrigado!

[color=red]Mensagem do moderador: Ao postar codigos utilize a tag [ code ]. GUJ Team. [/color]

5 Respostas

P

Cara tenho quase certeza que seu erro está aqui.

File("/home/jean/workspace/TechConf/bin/com/integrallis/TechConf/domain/hibernate.cfg.xml");

Você passando um diretório muito grande por isso ele não está achando o arquivo e está dando erro.

Tente colocar em um diretório sem tanta hierarquia.

Qualquer coisa se não der certo posta aqui.

ziegfried

Acho que você deve colocar // ao invés de / no caminho do hibernate.cfg.xml na linha:

File configFile = new File("/home/jean/workspace/TechConf/bin/com/integrallis/TechConf/domain/hibernate.cfg.xml");

Só uma coisa… Nunca usei essa de colocar o caminho absoluto do hibernate.cfg.xml. Basta colocar no pacote padrão que o framework já identifica. No teu caso, seria na pasta bin

jeancv

Hum…pode ser…vou tentar hoje quando voltar pra casa e posto aqui…

keller

Olá,

Você pode testar o seguinte:

if( configFile == null ){
  System.err.println("nao encontrou o hibernate.cfg.xml");
  System.exit(1);
}

Mas tenho quase certeza que é falta do jta.jar no classpath
nao sei porque… :arrow: http://www.guj.com.br/posts/list/11748.java

Boa sorte! Até mais… :thumbup:

jeancv

Sim, era o jta.jar . No livro que estou seguindo essa biblioteca não era usada no classpath. Aliás, esse livro é meio confuso - Desenvolvendo em POJOS - do inciante ao Profissional. Alguém já leu?

Criado 25 de janeiro de 2007
Ultima resposta 29 de jan. de 2007
Respostas 5
Participantes 4