Wo soll hibernate.cfg.xml abgelegt werden?
-
12-12-2019 - |
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
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 inWEB-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 funktionierenAndernfalls 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.