2011-11-19 12 views
12

Sono nuovo di Hibernate, sto leggendo questo libro "Java persistence with Hibernate" e sto cercando di implementare l'esempio da lì. Finora il mio Ant è successo, ma quando provo ad eseguire la classe che contiene il metodo main sto ottenendo questo messaggio di errore:hibernate.cfg.xml non trovato

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 

E 'chiaro che di ibernazione non riesce a trovare il mio file di configurazione, che si trova nella directory principale

Progetto

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

mio il codice sorgente completo può essere trovato qui: http://pastebin.com/bGDUrxUf

Ho un server MySQL in esecuzione con un hibernateapp database e messaggi da tavolo

Grazie :)

risposta

15

Il hibernate.cfg.xml deve trovarsi all'interno della directory src; altrimenti non è coperto dal target di Ant copymetafiles, quindi non finirà nel classpath compilato.

+0

mi mossi a src, ricompilare utilizzando formica ed eseguire la classe tenendo il metodo principale, come applicazione Java e ottenuto lo stesso errore? Devo impostare un PERCORSO GLOBALE? – greenLizard

+0

@Agop: assicurarsi che finisca nella directory principale di una directory sul classpath. Ad esempio, se stai eseguendo 'java -classpath lib/foo.jar: lib/bar.jar :. ciao. Ciao mondo, quindi è necessario assicurarsi che sta finendo in '.'. – ruakh

+0

Lo sto usando usando Eclipse, quindi credo che il percorso della classe dovrebbe andare bene? – greenLizard

4

Non dovrebbe essere nella directory principale, dovrebbe essere sul classpath.

15

Il file hibernate.cfg.xml si trova nella directory principale del classpath del progetto. Se usi Maven assicurati che dovrebbe essere come src> resources> hibernate.cfg.xml.

2

È possibile caricare hibernate.cfg.xml da una directory diversa (non necessariamente il classpath) utilizzando il metodo configure(File configFile) che utilizza l'argomento hibernateConfigFile. (nota, sto usando Hibernate 4.3.7)

Ti piace questa:


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

Anche se è tardi, la soluzione è è necessario mettere questo file di configurazione all'interno della cartella delle risorse (projectxxxx -> Risorse) ha fornito un suo progetto di successo.

1

Se si sta lavorando su Intellij Idea, creare una cartella denominata "risorse" in src \ main \ java. Aprire l'impostazione del modulo del progetto, selezionare "Moduli" da sinistra e nella scheda "fonti" selezionare la cartella "risorse" appena creata e contrassegnarla come "Risorse". enter image description here

allora questo dovrebbe funzionare

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