2011-11-19 25 views
12

मैं हाइबरनेट के लिए नया हूं, इस पुस्तक को "हाइबरनेट के साथ जावा दृढ़ता" पढ़ रहा हूं और मैं वहां से उदाहरण को लागू करने की कोशिश कर रहा हूं। अब तक मेरी चींटी निर्माण सफल होता है, लेकिन जब मैं मुख्य विधि मैं यह त्रुटि संदेश मिल रहा है जिसमें वर्ग को निष्पादित करने का प्रयास करें:hibernate.cfg.xml नहीं मिला

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 

यह हाइबरनेट मेरी कॉन्फ़िग फ़ाइल है, जो स्थित है नहीं मिल सकता है कि स्पष्ट है रूट डीआईआर में।

परियोजना

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

मेरे पूरा स्रोत कोड यहां पाया जा सकता: http://pastebin.com/bGDUrxUf

मैं एक डेटाबेस hibernateapp और टेबल संदेश के साथ एक चल MySQL सर्वर

धन्यवाद :)

उत्तर

15

आपकी hibernate.cfg.xmlsrc निर्देशिका के अंदर होने की आवश्यकता है; अन्यथा यह चींटियों के copymetafiles लक्ष्य से कवर नहीं है, इसलिए यह आपके संकलित क्लासपाथ में समाप्त नहीं होगा।

+0

मैं, src पर ले जाते हैं चींटी का उपयोग कर पुन: संयोजित और जावा आवेदन के रूप में मुख्य विधि पकड़े वर्ग चला और एक ही त्रुटि मिली चाहिए? क्या मुझे कुछ ग्लोबल पाथ सेट करने की ज़रूरत है? – greenLizard

+0

@Agop: सुनिश्चित करें कि यह आपके क्लासपाथ पर निर्देशिकाओं की जड़ में समाप्त हो रहा है। उदाहरण के लिए, यदि आप 'जावा-क्लासपाथ lib/foo.jar चला रहे हैं: lib/bar.jar:। हैलो.हेलोवर्ल्ड ', तो आपको यह सुनिश्चित करना होगा कि यह' .' में समाप्त हो रहा है। – ruakh

+0

मैं ग्रहण का उपयोग कर इसे चला रहा हूं, इसलिए मेरा मानना ​​है कि कक्षा पथ ठीक होना चाहिए? – greenLizard

4

यह आपकी मूल निर्देशिका में नहीं होना चाहिए, यह आपके क्लासपाथ पर होना चाहिए।

15

hibernate.cfg.xml फ़ाइल shoul आपकी प्रोजेक्ट के क्लासपाथ की रूट निर्देशिका में हो। यदि आप मेवेन का उपयोग करते हैं तो सुनिश्चित करें कि यह src> संसाधन> hibernate.cfg.xml जैसा होना चाहिए।

2

आप भिन्न निर्देशिका (जरूरी नहीं classpath) configure(File configFile) विधि है कि hibernateConfigFile तर्क लेता का उपयोग करने से hibernate.cfg.xml लोड कर सकते हैं।


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

हालांकि यह देर हो चुकी है, समाधान आप संसाधन फ़ोल्डर के अंदर इस विन्यास फाइल (projectxxxx लगाने की जरूरत है:

इस तरह

(ध्यान दें, मैं हाइबरनेट 4.3.7 का उपयोग कर रहा) -> संसाधन) ने इसे एक मेवेन प्रोजेक्ट प्रदान किया।

1

यदि आप इंटेलिज आइडिया पर काम कर रहे हैं तो src \ main \ java के तहत "संसाधन" नामक फ़ोल्डर बनाएं। अपनी प्रोजेक्ट की ओपन मॉड्यूल सेटिंग, बाएं से "मॉड्यूल" का चयन करें और "स्रोत" टैब में नए बनाए गए "संसाधन" फ़ोल्डर का चयन करें और इसे "संसाधन" के रूप में चिह्नित करें। enter image description here

तो यह काम

Configuration con = new Configuration().configure("hibernate.cfg.xml"); 
संबंधित मुद्दे