Dove posizionare Hibernate.cfg.xml?
-
12-12-2019 - |
Domanda
Il mio progetto è come questo:
/src/main/java
-thegamers
-app.java
-hibernateutil.java
.
qualcuno può dirmi dove mettere l'ibernate.cfg.xml?
Perché sto ricevendo questo errore:
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
. Soluzione
Il file di configurazione hibernate.cfg.xml
deve essere sul classpath
.
Questo può essere realizzato in modi diversi, a seconda del progetto.
- .
-
per un progetto Web-app War (stai eseguendo il programma in un contenitore servlet): Posizionandolo in
WEB-INF/classes
funzionerà come file inWEB-INF/classes
sono visibili sul classPath quando l'app è in esecuzione in contenitore. -
per un Maven -Style Project (non esegue il programma in un contenitore servlet): posizionandolo in
/src/main/resources/
funzionerà -
Per altrimenti, prova nella directory
src/
.
Altri suggerimenti
Sto usando MAVEN, e non ha funzionato per me fino a quando non metto hibernate.cfg.xml in src/main/resources
.
Alla radice del tuo progetto: /src
(a Leat come predefinito)
Come sapere se /src
è la Dir fondiazione?
Quando crei una nuova classe Java, è contenuta in un pacchetto (normalmente è chiamato come lo stesso nome della DER dove viene creato).Quindi, nella tua dichiarazione di classe puoi vedere qualcosa del genere:
package foo;
class MyClass{
.
In Impostazioni IDE predefinite, la classe dovrebbe essere trovata in /src/foo/MyClass.java
.Come puoi vedere, in questo scenario /src
agisce come sorgenti di root dir.
Se non è il progetto Web, quindi fai esplicitamente come quella
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
.
Spero che questo possa aiutare
@sib ha indicato un collegamento (sito Web di Mcyong).È spiegato bene lì.
Il file suppone di entrare nella root del /src
Dir, mentre /src
non è distribuito, tutto in esso è stato costruito / copiato a WEB-INF/classes
che è schierato.Ibernate ha bisogno del file cfg.xml
nel classpath
del tuo progetto per caricare le sue impostazioni di configurazione, la WEB-INF
Dir non è nel tuo classpath
, quindi se dovessi metterlo lì, saresti nascondendo Dall'ibernazionee non funzionerebbe.
Questo thread Ti direbbe come caricare ibernate.cfg.xml da qualsiasi percorso diverso.
Se si utilizza Eclipse, vai su Progetto -> Proprietà -> Java Build Path -> Source.È possibile aggiungere la nuova cartella in cui è stato posizionato il file o sposta il file nella cartella esistente.
cmd + n / ctr + n Mentre si è su eclips, aprirà una finestra di dialogo lì è necessario fare clic su Dubel clicca sulla cartella Ibernate. Aprirà un elenco di file con l'Extenuation XML. Seleziona CFG.xml e fai clic su Continua e quando hai finito!Clicca sulla finitura.Eclips aggiungerà ora il nome della classe con il file cfg.xml e mostralo sotto la cartella SRC.GB
Posizionare hibernate.cfg.xml
sotto la cartella src/
o menziona esplicitamente il percorso nel codice come:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
. Prova a posizionarlo nella directory "src/main/resources
".