Pregunta

Mi proyecto es así:

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

¿Alguien puede decirme dónde poner hibernate.cfg.xml?

porque recibo este error:

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
¿Fue útil?

Solución

El archivo de configuración hibernate.cfg.xml necesita estar en el classpath.

Esto se puede lograr de diferentes maneras, dependiendo de su proyecto.

  • Para Guerra de aplicaciones web proyecto (está ejecutando el programa en un contenedor de servlet):colocándolo en WEB-INF/classes funcionarán como archivos en WEB-INF/classes son visibles en el classpath cuando la aplicación se ejecuta en el contenedor.

  • Para experto-proyecto de estilo (sin ejecutar el programa en un contenedor de servlet):colocándolo en /src/main/resources/ trabajará

  • De lo contrario, pruebe en el src/ directorio.

Otros consejos

Estoy usando Maven, y no funcionó para mí hasta que puse hibernate.cfg.xml en src/main/resources.

En la raíz de su proyecto: /src (al menos por defecto)

como saber si /src ¿Las fuentes son dir?
Cuando crea una nueva clase Java, está contenida en un paquete (normalmente se llama con el mismo nombre del directorio donde se crea).Entonces, en tu declaración de clase puedes ver algo como esto:

package foo;

class MyClass{

En la configuración predeterminada del IDE, la clase debería encontrarse en /src/foo/MyClass.java.Como puedes ver, en este escenario /src actúa como directorio de fuentes raíz.

Si no es un proyecto web, entonces hágalo explícitamente así

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

Espero que esto pueda ayudar

@sib apuntó un enlace (sitio web de Myong).Se explica bien allí.

Se supone que el archivo debe ir a la raíz de su /src directorio, mientras /src no está implementado, todo lo que contiene se construye/copia en WEB-INF/classes que está desplegado.Hibernar necesita el cfg.xml archivo en el classpath de su proyecto para cargar sus ajustes de configuración, su WEB-INF dir no está en tu classpath, así que si lo pusieras allí, estarías ocultación sacarlo de Hibernate y no funcionaría.

Este hilo Le diría cómo cargar hibernate.cfg.xml desde cualquier ruta diferente.

Si está utilizando Eclipse, vaya al proyecto -> Propiedades -> Java Build Ruta -> Fuente.Puede agregar la nueva carpeta donde colocó el archivo o mueva el archivo a la carpeta existente.

cmd + n / ctr + n Mientras está en Eclips, abrirá un cuadro de diálogo allí, debe hacer clic en la carpeta Hibel. Abrirá una lista de archivos con la extensión XML. ¡Seleccione el CFG.xml y haga clic en Continuar y cuando haya terminado!Haga clic en Finalizar.ECLIPS ahora agregará el nombre de la clase con el archivo cfg.xml y mostrarálo debajo de la carpeta SRC.GB

Coloque hibernate.cfg.xml en la carpeta src/ o mencione explícitamente la ruta en el código como:

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

Trate de colocarlo en el directorio "src/main/resources".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top