Java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration

1 resposta
KamillaaaH

Olá! Estou começando o estudo de Hibernate e tive alguns problemas com configuração que não consigo resolver.

Uso o Ubuntu 11.10 e no momento não estou usando IDE, mas uso o Ant e inclui o seguinte alvo:

<target name="hibernatetest" depends="build">
        <java fork="true" classpathref="master-classpath" 
              classname="com.visualpatterns.timex.test.HibernateTest" />
    </target>

Tenho o arquivo HibernateTest.java para realizar o teste inicial:

package com.visualpatterns.timex.test;

import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.visualpatterns.timex.model.Department;

//TODO: Add Javadoc comments
public class HibernateTest
{
    public static void main(String args[]) throws Exception
    {
        SessionFactory sessionFactory = new Configuration().configure()
                .buildSessionFactory();
        Session session = sessionFactory.openSession(); // changed to
        // openSession
        Transaction tx = session.beginTransaction();
        Department department;

        // Demo 1: Get single record
        department = (Department) session.get(Department.class, "IT");
        System.out.println("Name for IT = " + department.getName());

        // Demo 2: Get all records
        List departmentList = session.createQuery("from Department").list();
        for (int i = 0; i < departmentList.size(); i++)
        {
            department = (Department) departmentList.get(i);
            System.out.println("Row " + (i + 1) + "> " + department.getName()
                    + " (" + department.getDepartmentCode() + ")");
        }

        tx.commit();
        session.close();
        sessionFactory.close();
    }
}

A classe Department.java:

package com.visualpatterns.timex.model;

public class Department{
	
	String departmentCode;
	String name;
	
	public void setDepartmentCode(String _departmentCode){
		this.departmentCode = _departmentCode;		
	}	
	
	public String getDepartmentCode(){
		return this.departmentCode;		
	}
	
	public void setName(String _name){
		this.name = _name;		
	}	
	
	public String getName(){
		return this.name;		
	}
	
}

O arquivo Department.hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
	"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.visualpatterns.timex.model.Department" table="Department">
		<id name="departmentCode" column="departmentCode">
			<generator class="assigned"/>
		</id>
		<property name="name" column="name"/>
   </class>
</hibernate-mapping>

E o arquivo hibernate.cfg.xml está da seguinte forma:

<?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>
		<!-- Database connection settings -->
		<property name="connection.driver_class">
			org.hsqldb.jdbcDriver
		</property>
		<property name="connection.url">
			jdbc:hsqldb:hsql://localhost:9005/timex
		</property>
		<property name="connection.username">sa</property>
		<property name="connection.password"></property>

		<property name="connection.pool_size">2</property>
		<property name="show_sql">true</property>
		<property name="dialect">
			org.hibernate.dialect.HSQLDialect
		</property>
		<property name="current_session_context_class">thread</property>
		<property name="cache.provider_class">
			org.hibernate.cache.NoCacheProvider
		</property>

	<!-- Arquivos de mapeamento -->
		<mapping resource="Department.hbm.xml" />
		
		<!--<mapping resource="Timesheet.hbm.xml" />
		<mapping resource="Employee.hbm.xml" />-->
	</session-factory>
</hibernate-configuration>

Estou usando o Hibernate 4 e inclui todos os .jar da pasta required na pasta lib do meu projeto, porém quando vou rodar o teste tenho o seguinte problema:

kamilla@kamilla-pc:~/HelloWorld/timex$ ant hibernatetest 
Buildfile: /home/kamilla/HelloWorld/timex/build.xml

init:

compile:
    [javac] /home/kamilla/HelloWorld/timex/build.xml:122: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

updateweb:

updateconfig:
     [echo] Environment config file: local.properties

updatelib:

build:

hibernatetest:
     [java] Exception in thread "main" java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
     [java] 	at com.visualpatterns.timex.test.HibernateTest.main(HibernateTest.java:15)
     [java] Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
     [java] 	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     [java] 	at java.security.AccessController.doPrivileged(Native Method)
     [java] 	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [java] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
     [java] 	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
     [java] 	at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
     [java] 	... 1 more
     [java] Java Result: 1

BUILD SUCCESSFUL
Total time: 2 seconds

Já configurei o CLASSPATH da seguinte forma:

export CLASSPATH=/opt/hibernate/lib/required

E também tentei:

export CLASSPATH=/opt/hibernate/lib/required/hibernate4.jar

Mas nada resolve o problema… Não sei o que fazer para configurar, pois pra mim ele deveria já funcionar. Não faz muito sentido não reconhecer o arquivo em org/hibernate/cfg/Configuration. Alguém pode me ajudar a resolver?

1 Resposta

KamillaaaH

Ninguém?

Criado 19 de dezembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 1
Participantes 1