web-dev-qa-db-de.com

Wo soll hibernate.cfg.xml platziert werden?

Mein Projekt ist so:

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

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

weil ich diesen Fehler bekomme:

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
39
Noor

Die Konfigurationsdatei hibernate.cfg.xml muss sich in der classpath befinden.

Dies kann auf unterschiedliche Weise erfolgen, abhängig von Ihrem Projekt.

  • Für ein web-app WAR -Projekt (Sie führen das Programm in einem Servlet-Container aus): Wenn Sie es in WEB-INF/classes platzieren, funktionieren die Dateien in WEB-INF/classes im Klassenpfad, wenn die App im Container ausgeführt wird.

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

  • Andernfalls versuchen Sie es im Verzeichnis src/.

20
mmcrae

Ich verwende Maven und es funktionierte nicht für mich, bis ich hibernate.cfg.xml in src/main/resources steckte.

14
ksnortum

Im Stammverzeichnis Ihres Projekts: /src (standardmäßig bei leat)

Woher weiß man, ob /src das Quellverzeichnis ist?
Wenn Sie eine neue Java-Klasse erstellen, ist sie in einem Paket enthalten (normalerweise wird sie als derselbe Name des Verzeichnisses bezeichnet, in dem sie erstellt wird). In Ihrer Klassendeklaration können Sie also Folgendes sehen: 

package foo;

class MyClass{

In den Standardeinstellungen IDE sollte die Klasse unter /src/foo/MyClass.Java gefunden werden. Wie Sie sehen, fungiert /src in diesem Szenario als Root-Quellverzeichnis.

11
manix

wenn es sich nicht um ein Webprojekt handelt, machen Sie das explizit so

new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()

Hoffe das kann helfen

@SiB wies auf einen Link (die Website von mkyong). Es wird dort gut erklärt.

4
Elbek

Es wird angenommen, dass sich die Datei im Stammverzeichnis Ihres /src-Verzeichnisses befindet. Während /src nicht implementiert ist, wird alles darin erstellt/in WEB-INF/classes kopiert, das von IS bereitgestellt wird. Hibernate benötigt die cfg.xml-Datei in der classpath Ihres Projekts, um die Konfigurationseinstellungen zu laden. Ihr WEB-INF-Verzeichnis befindet sich nicht in Ihrer classpath. Wenn Sie es also dort ablegen würden, wären Sie hiding vor Hibernate und würden es nicht funktioniert nicht.

Dieses thread würde Ihnen sagen, wie Sie die hibernate.cfg.xml von einem anderen Pfad laden.

2
SiB

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

1
Dino Tw

versuchen Sie es im Verzeichnis "src/main/resources" abzulegen. 

0
Matteo Pipitone

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

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

CMD + N/CTR + N, während Sie sich auf Eclips befinden, wird ein Dialogfeld geöffnet, in dem Sie auf den Hibernate-Ordner klicken, und dann eine Liste mit Dateien mit der XML-Erweiterung öffnen die cfg.xml und klicken Sie auf weiter und wenn Sie fertig sind! Klicken Sie auf Fertig stellen. Eclips fügt nun den Klassennamen mit der Datei cfg.xml hinzu und zeigt ihn unter dem SRC-Ordner an. GB

0
bariyaw