Frage

Mein Projekt sieht so aus:

/src/main/java
     -thegamers
         -app.java
         -hibernateutil.java

Kann mir jemand sagen, wo ich die hibernate.cfg.xml ablegen soll?

weil ich diesen Fehler erhalte:

Initial SessionFactory creation failed.org.hibernate.HibernateException: hibernate.cfg.xml not found
Exception in thread "main" java.lang.ExceptionInInitializerError
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:17)
    at thegamers.HibernateUtil.<clinit>(HibernateUtil.java:8)
    at thegamers.App.main(App.java:15)
Caused by: org.hibernate.HibernateException: hibernate.cfg.xml not found
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2149)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2130)
    at thegamers.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
    ... 2 more
War es hilfreich?

Lösung

Die Konfigurationsdatei hibernate.cfg.xml muss auf der sein classpath.

Dies kann je nach Projekt auf unterschiedliche Weise erfolgen.

  • Für ein Web-App WAR Projekt (Sie führen das Programm in einem Servlet-Container aus):hineinlegen WEB-INF/classes funktionieren als Dateien in WEB-INF/classes sind im Klassenpfad sichtbar, wenn die App im Container ausgeführt wird.

  • Für ein Maven-style-Projekt (das Programm wird nicht in einem Servlet-Container ausgeführt):hineinlegen /src/main/resources/ wird funktionieren

  • Andernfalls versuchen Sie es in der src/ Verzeichnis.

Andere Tipps

Ich verwende Maven und es hat bei mir nicht funktioniert, bis ich hibernate.cfg.xml eingefügt habe src/main/resources.

Die Wurzel Ihres Projekts: /src (zumindest standardmäßig)

Wie erkennt man, ob /src Ist das Quellenverzeichnis?
Wenn Sie eine neue Java-Klasse erstellen, ist diese in einem Paket enthalten (normalerweise wird sie mit dem gleichen Namen wie das Verzeichnis bezeichnet, in dem sie erstellt wurde).In Ihrer Klassendeklaration können Sie also etwa Folgendes sehen:

package foo;

class MyClass{

In den Standard-IDE-Einstellungen sollte die Klasse unter zu finden sein /src/foo/MyClass.java.Wie Sie in diesem Szenario sehen können /src fungiert als Root-Quellenverzeichnis.

Wenn es kein WEB-Projekt ist, dann dauert es explizit das generasacodicetagpre.

hoffe das kann helfen

@SIB zeigte auf einen Link (Mkkyongs Website).Es wird dort gut erklärt.

Die Datei soll im Stammverzeichnis Ihres Ordners abgelegt werden /src dir, während /src wird nicht bereitgestellt, alles darin wird erstellt/kopiert WEB-INF/classes welches eingesetzt wird.Hibernate braucht das cfg.xml Datei in der classpath Ihres Projekts, um seine Konfigurationseinstellungen zu laden, Ihre WEB-INF dir ist nicht in deinem classpath, Wenn Sie es also dort platzieren würden, wären Sie es verstecken es aus dem Ruhezustand und es würde nicht funktionieren.

Das Faden Ich würde Ihnen sagen, wie Sie die Datei hibernate.cfg.xml von einem anderen Pfad laden können.

Wenn Sie Eclipse verwenden, gehen Sie zu Projekt -> Eigenschaften -> Java Build Pfad -> Quelle.Sie können den neuen Ordner hinzufügen, in dem Sie die Datei platziert haben, oder verschieben Sie die Datei in den vorhandenen Ordner.

cmd + n / ctr + n Während Sie sich bei Eclips befinden, wird ein Dialogfeld dort geöffnet. Sie müssen dort dubbel klicken Sie auf den Hibernate-Ordner. Es wird eine Liste von Dateien mit der XML-Extension geöffnet. Wählen Sie den CFG.XML aus und klicken Sie auf Weiter und wann Sie fertig sind!Klicken Sie auf Fertig stellen.Eclips fügen nun den Klassennamen mit der Datei cfg.xml hinzu und zeigt es unter dem Ordner SRC.Gb

Ort hibernate.cfg.xml unter src/ Ordner oder geben Sie den Pfad im Code explizit an als:

new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()

Versuchen Sie, es in das Verzeichnis "src/main/resources" zu platzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top