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
.

È stato utile?

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 in WEB-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".

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top