# Hibernate endlich zu Laufen bekommen...



## automatix (27. Okt 2010)

Hallo Leute!

Um ins Thema einzusteigen, habe ich ich es mit diesem Mini-Tutorial versucht. Nun gibt es folgende Fehlermeldung, die indirekt zur Zeile mit


```
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
```

führt. Wenn man den finally-Block auskomentiert, kriegt man folgende Fehlermeldung:



> 60 [main] INFO org.hibernate.annotations.common.Version - Hibernate Commons Annotations 3.2.0.Final
> 60 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.6.0.Final
> Exception in thread "main" java.lang.ExceptionInInitializerError
> at org.hibernate.cfg.Configuration.reset(Configuration.java:330)
> ...



Hat jemand eine Idee, was hier schief läuft?

Danke


----------



## Marcinek (27. Okt 2010)

Ich endecke eine Nullpointer in der konfiguration...

Um die Konfiguration mit Annotations zu machen, brauchst du einen AnnotationConfigurator und AnnotationFactory und so..


----------



## automatix (28. Okt 2010)

Im Beispiel werden keine Annotations verwendet, es gibt nur die XML-Konfiguration.


----------



## Andi_CH (28. Okt 2010)

Da mich das Thema auch interessiert hab ich das zip geladen - fragen geht schneller als googeln und lesen - ja ich weiss ich bin faul ;-) - Nein, aber um einige 1000 Links zu untersuchen fehlt mir die Zeit - ist halt nur mein Hobby nebenher ;-)

Die Pakete org.hibernate.* fehlen bei mir - wo finde ich die auf die Schnelle und wie gehe ich damit um?
(hibernate-distribution-3.6.0.Final von sourceforge habe ich aber das ist doch etwas unübersichtlich)

Edit: Es scheint schon das richtige zu sein (Configuration.java gibt es auf jeden fall), aber wie binde ich diesen Moloch ein???


----------



## automatix (28. Okt 2010)

@Andi_CH
Was hat das mit dem Thema des Threads zu tun? Warum öffnest du nicht einfach einen neuen Thread?


----------



## krazun (28. Okt 2010)

Ich hab die Zip-Datei mit deinem Beispiel runtergeladen, den Finally-Block wieder einkommentiert und es funktioniert ohne Probleme: Das Objekt wurde erfolgreich in die Datenbank geschrieben.

Also kann es am Quelltext nicht liegen. 

Vielleicht eine falsche oder veraltete Lib eingebunden?

Ich hab folgende Versionen für das Beispiel benutzt:


antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
mysql-connector-java-5.1.13-bin.jar
slf4j-api-1.6.1.jar
slf4j-simple-1.6.1.jar

mfg,
krazun


----------



## krazun (28. Okt 2010)

Hab grad gesehen du hast einfach die "hibernate-distribution-3.6.0.Final-dist.zip" eingebunden. 

Entpack die Zip-Datei und binde dann daraus folgende Jar dateien ein:


...hibernate-distribution-3.6.0.Final\hibernate3.jar
Alle Jar Dateien aus: ...hibernate-distribution-3.6.0.Final\lib\required\*
und ...hibernate-distribution-3.6.0.Final\lib\jpa\*

Auch die anderen Libs würd ich nochmal überprüfen. Es sieht z.B so aus als hättest du "mysql-connector-java-5.1.13.zip" eingebunden. Du musst aber "mysql-connector-java-5.1.13-bin.jar" einbinden, welche in dieser Zip-Datei drin ist. (Komplette Liste der benötigten *.jar-Dateien siehe letzter Post)

mfg,
krazun


----------



## automatix (28. Okt 2010)

Danke Dir erstmal, dass Du den Aufwand betrieben hast, das Projekt bei Dir zu testen, und man nun zumindest den Anwendungscode von der Verdächtigen-Liste streichen kann.



krazun hat gesagt.:


> Hab grad gesehen du hast einfach die "hibernate-distribution-3.6.0.Final-dist.zip" eingebunden.


Wo siehst Du das? Alle von Dir aufgezählten Libs sind eingebunden. Nur der MySQL-Connector ist bei mir ein paar Updates älter -- aber daran wir es bestimmt nicht liegen (oder)? Ich habe nicht die ZIPs inkludiert, sondern die Archive entpackt und einfach mal alle Untereverzeichnisse durchforstet und sicherheitshalber alle JARs eingebunden (s. Attachment).

D.h.: der Code ist in Ordnung, die Libs sind da... Woran kann es denn noch liegen?


----------



## krazun (28. Okt 2010)

> Wo siehst Du das?



Wenn ich dein Projekt bei mir importiere sind die Abhängigkeiten die du eingestellt hast noch im build path zu sehen, auch wenn sie bei mir nicht gefunden werden.

Das einzige was mir noch einfällt ist eventuell mal die ganzen libs zu entfernen die nicht benötigt werden. Also versuch es mal nur mit den libs mit denen es bei mir funktioniert. Bin mir nicht ganz sicher aber ich meine das es zu Problemen führen kann wenn man mehrere libs eingebunden hat, die unter Umständen die selben Klassen enthalten.

Warum hast du denn die hsqldb libs eingebunden? Laut der Hibernate Config nutzt du ja MySQL.

mfg,
krazun


----------



## automatix (28. Okt 2010)

Vielen lieben Dank! Es funktioniert! Endlich! Ich musste nur die Liste der eingebundenen JARs auf das Nötige reduzieren (s. Bild).

Verständnisfrage: Wie kann das eigentlich sein, dass zu viele inkludierte Libraries die Ausführung des Programms verhindern? OK, theoretisch könnten ja einige fehlerhaft sein (sind sie bestimmt nicht, aber es wäre ja rein theoretisch möglich). Aber das dürfte doch keine Rolle spielen, wenn sie eh nicht verwendet werden. Könntest Du (oder vlt. noch jemand?) mir das erklären?


----------



## krazun (29. Okt 2010)

Problematisch wird es erst dann, wenn verschiedenen *.jars die selben Klassen beinhalten weil dann eventuell nicht genau definiert ist welche benutzt werden. 

Wenn z.B die Klasse org.hibernate.util.ConfigHelper.getResourceAsStream sowohl in dem *.jar "hibernate3.jar" "und "hibernate-testing.jar" enthalten ist kann es zu Problemen kommen. Falls z.B. die Klasse aus "hibernate-testing.jar" benutzt wird, aber alle anderen libs sich normalerweise auf die Version aus "hibernate3.jar" beziehen kommt es zu solchen Fehlern. Ich weiß nicht ob diese beide libs in deinem Fall an dem Fehler schuld waren, weil ich mich noch nicht informiert habe wozu das testing-package ist, aber es kann öfters mal vorkommen das ein Framework libs enthält die man nicht zusammen nutzen sollte, sondern nur entweder oder.

mfg,
krazun


----------



## automatix (29. Okt 2010)

Alles klar, danke schön!


----------

