Hibernate Frust - stehe auf dem Schlauch

chickenwings

Erfahrenes Mitglied
Hallo,

dachte es wird Zeit, sich mal wieder mit etwas Hibernate zu beschäftigen. Habe auch ein paar Tutorials gefunden und durchgearbeitet. Habe ein ganz simples Beispiel durchgespielt, bekomme es allerdings nicht zum Laufen.

Ich bekomme stets die Exception
Code:
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/validation/Validation

Ich habe zwei Klassen. Die erste macht erstmal nichts anderes als sich eine Session zu holen:
Code:
public static void main(String[] args) {
        ...
	SessionFactory sf = HibernateUtil.getSessionFactory();
	Session session = null;
	Transaction transaction = null;
        ...
}

DIe zweite Klasse liefert die Session aus:
Code:
public class HibernateUtil {
       private static SessionFactory sessionFactory;	
       static {
	    try {
		  sessionFactory = new Configuration().configure().buildSessionFactory();
	    } catch (Throwable ex) {
		  // Log exception!
		  throw new ExceptionInInitializerError(ex);
	    }
        }

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

Das ganze basiert natürlich auf meinee hibernate.cfg.xml Konfiguration:
Code:
<?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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/opt_db</property>
		<property name="hibernate.connection.username">xxx</property>
		<property name="hibernate.connection.password">xxx</property>
		<property name="connection.pool_size">1</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="current_session_context_class">thread</property>
		<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
		<property name="show_sql">true</property>
		<property name="hbm2ddl.auto">validate</property>
	</session-factory>
</hibernate-configuration>

Eine Entity habe ich natürlich auch noch, denke aber nicht dass die das Problem darstellt, da der Fehler in HibernateUtil geworfen wird.

Ich benutze Eclipse als IDE mit Maven.
In meiner pom.xml habe ich folgende Dependencys eingetragen:
Code:
<dependency>
        <groupId>javax</groupId>
	<artifactId>javaee-api</artifactId>
	<version>6.0</version>
	<scope>compile</scope>
</dependency>
<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-core</artifactId>
	<version>3.6.8.Final</version>
</dependency>
<dependency>
	<groupId>org.hibernate.javax.persistence</groupId>
	<artifactId>hibernate-jpa-2.0-api</artifactId>
	<version>1.0.1.Final</version>
</dependency>
<dependency>
        <groupId>org.hibernate</groupId>
	<artifactId>hibernate-validator</artifactId>
	<version>4.3.1.Final</version>
</dependency>
<dependency>
	<groupId>org.hibernate</groupId>
	<artifactId>hibernate-annotations</artifactId>
	<version>3.5.6-Final</version>
</dependency>

Meine Vermutung war, dass irgend eine jar fehlt, finde aber keinen Hinweis darauf welche.
Kann Jemand Hilfestellung leisten?

Danke
chickenwings
 
Hallo,

danke für Deine Antwort. Darin könnteevtl. das Problem liegen obwohl mir nicht klar ist warum diese Tutorials dann keine Container erwähnen und Klassen mit main() zum Ausführen darstellen. Any way, ich benutze Tomcat, muss also mich in diese Richtung orientieren.

Danke nochmals für den Tipp.
chickenwings
 
Hi,

ich bin absoluter Neuling, was Hibernate angeht und bin auch schon über den Validation-Kram gestolpert. Bei der Recherche bin ich auf einen Foren-Eintrag gestoßen, in dem der Fragesteller auch gleich die Lösung für mein Problem gepostet hat. Er empfiehlt darin, auf 3.5.6-Final zu gehen. Und das hat bei mir auch die Lösung gebracht. Vielleicht probierst du es mal damit.
 
Zurück