2011-11-19 23 views
12

Soy nuevo en Hibernate, leyendo este libro "La persistencia de Java con Hibernate" y estoy tratando de implementar el ejemplo a partir de ahí. Hasta ahora, mi construcción Ant es un éxito, pero cuando trato de ejecutar la clase que contiene el método principal que estoy recibiendo este mensaje de error:hibernate.cfg.xml no encontrado

19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: Hibernate 3.2.3 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: hibernate.properties not found 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: Bytecode provider name : cglib 
19-Nov-2011 18:40:09 org.hibernate.cfg.Environment <clinit> 
INFO: using JDK 1.4 java.sql.Timestamp handling 
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration configure 
INFO: configuring from resource: /hibernate.cfg.xml 
19-Nov-2011 18:40:09 org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: Configuration resource: /hibernate.cfg.xml 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at persistence.HibernateUtil.<clinit>(Unknown Source) 
    at hello.Driver.main(Unknown Source) 
Caused by: org.hibernate.HibernateException: /hibernate.cfg.xml not found 
    at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:147) 
    at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1405) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1427) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1414) 
    ... 2 more 

Está claro que Hibernate no puede encontrar mi fichero de configuración, que se encuentra en el directorio raíz

Proyecto

+lib 
<all required libraries> 
+src 
    +hello 
    HelloWorld.java 
    Message.java 
    message.hbm.xml 
    +persistence 
    HibernateUtil.java 
build.xml 
hibernate.cfg.xml 

Mi el código fuente completo se puede encontrar aquí: http://pastebin.com/bGDUrxUf

Tengo un servidor MySQL se ejecuta con un hibernateapp base de datos y mensajes de mesa

Gracias :)

Respuesta

15

Su hibernate.cfg.xml debe estar dentro del directorio src; de lo contrario, no está cubierto por el objetivo copymetafiles de Ant, por lo que no terminará en el classpath compilado.

+0

que se movió a src, vuelva a compilar el uso de hormigas y ejecutar la clase sosteniendo el principal método como aplicación Java y consiguió el mismo error? ¿Debo establecer alguna RUTA GLOBAL? – greenLizard

+0

@Agop: asegúrese de que esté terminando en la raíz de uno de los directorios en su classpath. Por ejemplo, si está ejecutando 'java -classpath lib/foo.jar: lib/bar.jar :. hello.HelloWorld', entonces necesitas asegurarte de que termine en '.'. – ruakh

+0

Lo estoy ejecutando usando Eclipse, ¿así que creo que la ruta de clase debería estar bien? – greenLizard

4

No debe estar en su directorio raíz, debe estar en su classpath.

15

El archivo hibernate.cfg.xml debe estar en el directorio raíz del classpath de su proyecto. Si usa Maven, asegúrese de que sea como src> resources> hibernate.cfg.xml.

2

Puede cargar hibernate.cfg.xml desde un directorio diferente (no necesariamente el classpath) utilizando el método configure(File configFile) que toma el argumento hibernateConfigFile. (nota, estoy usando Hibernate 4.3.7)

De esta manera:


String hibernatePropsFilePath = "/etc/configs/hibernate.cfg.xml"; 

File hibernatePropsFile = new File(hibernatePropsFilePath); 

Configuration configuration = new Configuration(); 
configuration.configure(hibernatePropsFile); 

StandardServiceRegistryBuilder serviceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); 

ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); 

SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
0

A pesar de que es tarde, la solución se tiene que poner este archivo de configuración dentro de la carpeta de recursos (projectxxxx -> Recursos) siempre que sea un proyecto experto.

1

Si está trabajando en Intellij Idea, cree una carpeta llamada "recursos" en src \ main \ java. Abra la configuración del Módulo de su proyecto, seleccione "Módulos" desde la izquierda y en la pestaña "Fuentes" seleccione la carpeta de "recursos" recién creada y márquelo como "Recursos". enter image description here

entonces esto debería funcionar

Configuration con = new Configuration().configure("hibernate.cfg.xml");