Où placer hibernate.cfg.xml?
-
12-12-2019 - |
Question
Mon projet est comme ceci:
/src/main/java
-thegamers
-app.java
-hibernateutil.java
quelqu'un peut-il me dire où mettre le hibernate.cfg.xml?
parce que je reçois cette erreur:
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
La solution
Le fichier de configuration hibernate.cfg.xml
doit être, sur le classpath
.
Ceci peut être accompli de différentes manières, en fonction de votre projet.
Pour un web-app de la GUERRE projet (vous exécutez le programme dans un conteneur de Servlet):le placer dans
WEB-INF/classes
va travailler en tant que fichiers dansWEB-INF/classes
sont visibles sur le chemin de la classe lorsque l'application s'exécute dans un conteneur.Pour un Maven-projet de style (pas d'exécuter le programme dans un conteneur de Servlet):le placer dans
/src/main/resources/
va travaillerSinon, essayez de la
src/
répertoire.
Autres conseils
Je suis l'aide de maven, et cela n'a pas fonctionné pour moi jusqu'à ce que j'ai mis hibernate.cfg.xml dans src/main/resources
.
À la racine de votre projet: /src
(au moins par défaut)
Comment savoir si /src
est les sources dir?
Lorsque vous créez une nouvelle classe Java, elle est contenue dans un paquet (normalement, il est appelé comme le même nom que le répertoire où il est créé).Donc, dans votre classe declarion vous pouvez voir quelque chose comme ceci:
package foo;
class MyClass{
En IDE par défaut des paramètres, la classe devrait trouvé en vertu de /src/foo/MyClass.java
.Comme vous pouvez le voir, dans ce scénario /src
agit en tant que root sources dir.
Si ce n'est pas un projet Web, faites explicitement que celui-ci
new Configuration().configure( "pth/to/hibernate.cfg.xml").buildsessionfactory()
J'espère que cela peut aider
@SIB a pointé un lien (site Web de Mkyong).Il est bien expliqué là-bas.
Le fichier est supposé aller à la racine de votre /src
dir, tandis que /src
n'est pas déployé, tout est construit, copié à WEB-INF/classes
qui EST déployée.Hibernate a besoin de l' cfg.xml
fichier dans le classpath
de votre projet afin de charger ses paramètres de configuration, votre WEB-INF
dir est pas dans votre classpath
, donc , si vous faites de la mettre là, vous seriez cacher il veille prolongée et que ça ne marcherait pas.
Cette fil vous dira comment faire pour charger l'hibernate.cfg.xml à partir de tout autre chemin d'accès.
Si vous utilisez Eclipse, allez à Project -> Propriétés -> Chemin de construction Java -> Source.Vous pouvez ajouter le nouveau dossier où vous avez placé le fichier ou déplacez le fichier dans le dossier existant.
CMD + N / CTR + N Pendant que vous êtes sur Eclips, il ouvrira une boîte de dialogue là où vous avez à Dubbel Cliquez sur le dossier Hibernate. Il ouvrira une liste de fichiers avec l'atténuation XML. Sélectionnez le CFG.XML et cliquez sur Continuer et quand vous avez terminé!Cliquez sur Terminer.Eclips ajoutera maintenant le nom de la classe avec le fichier CFG.XML et le montrer sous le dossier SRC.GB
Place hibernate.cfg.xml
en vertu de src/
dossier ou mentionner explicitement le chemin d'accès dans le code comme:
new Configuration.configure("path of hibernate.cfg.xml").buildsessionfactory()
Essayez de le placer dans le répertoire "src/main/resources
".