2012-12-17 25 views
5

this Hibernate tutorial में कदम # 4 का पालन करने की कोशिश कर रहा:हाइबरनेट ट्यूटोरियल में वर्णित HSQLDB सर्वर लॉन्च कैसे करें?

[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'exec'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building First Hibernate Tutorial 
[INFO] task-segment: [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing exec:java 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java {execution: default-cli}] 
[WARNING] 
java.lang.ClassNotFoundException: org.hsqldb.Server 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) 
     at java.lang.Thread.run(Thread.java:662) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An exception occured while executing the Java class. org.hsqldb.Server 

[INFO] ------------------------------------------------------------------------ 
[INFO] For more information, run Maven with the -e switch 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: < 1 second 
[INFO] Finished at: Mon Dec 17 16:35:42 EST 2012 
[INFO] Final Memory: 6M/15M 
[INFO] ------------------------------------------------------------------------ 

यह नवीनतम HSQLDB पैकेज डाउनलोड और the FAQ प्रति यह स्थापित करने के बावजूद है:

mvn exec:java -Dexec.mainClass="org.hsqldb.Server" -Dexec.args="-database.0 file:target/data/tutorial" 

मैं इस त्रुटि हो रही है। hsqldb.jar फ़ाइल C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib में स्थित है और यह कम से classpath env var अंक: org.hsqldb.Server त्रुटि:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib 

तो क्यों मैं इस ClassNotFoundException प्राप्त कर रहा हूँ?

मैं क्या गलत कर रहा हूं?

उत्तर

13

सबसे पहले, आपके क्लासस्पैट किसी भी जार के लिए आम तौर पर सही नहीं है। एक जार नाम निर्दिष्ट किया जाना चाहिए, उदाहरण के लिए:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib\hsqldb.jar 

दूसरा, CLASSPATH आवश्यक नहीं है इस ट्यूटोरियल के लिए, के रूप में यह एक Maven परियोजना है। आपको उस प्रासंगिक ट्यूटोरियल की धारा 1.1.1 में वर्णित pom.xml फ़ाइल पर प्रासंगिक निर्भरता जोड़नी चाहिए। बस इस ब्लॉक को pom.xml में सूचीबद्ध टैब पर जोड़ें:

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <version>2.2.9</version> 
</dependency> 
+1

इसके अलावा, मैंने अभी सत्यापित किया है कि '' 'pom.xml' में है, तो पर्यावरण में कोई क्लासस्पैट आवश्यक नहीं है। दिलचस्प है कि कैसे मैवेन इसे पूरा करने का प्रबंधन करता है। – Withheld

1

मैं http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.2.GA/ से ट्यूटोरियल की ताजा प्रति डाउनलोड करने की सिफारिश करता हूं और इसे बनाने का प्रयास करता हूं। यदि आप hsqldb या कॉमन्स-लॉगिंग जैसे अन्य निर्भरों को याद करेंगे और अन्य लोगों को मैवेन प्रोजेक्ट रिपोजिटरी - https://repository.jboss.org/nexus/content/repositories/thirdparty-releases जोड़कर हल किया गया है। एक बार सभी कलाकृतियों को डाउनलोड करने के बाद मैं HSQLDB सर्वर चलाने में सक्षम था। ताजा डाउनलोड किए गए एक के साथ अपने वर्तमान प्रोजेक्ट की तुलना करने की सिफारिश करेंगे। यह आपकी समस्या का समाधान करना चाहिए।

+0

धन्यवाद और @gerrytan भी आपको धन्यवाद। – Withheld

2

http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html के अनुसार, आपको .jar के साथ समाप्त होने वाले पूरे पथ को निर्दिष्ट करने की आवश्यकता है। यदि एकाधिक जार फ़ाइलें हैं, तो शायद सी: \ path \ to \ hibernate * .jar

निर्दिष्ट करने का प्रयास करें यदि आप केवल निर्देशिका निर्दिष्ट करते हैं, तो केवल * .class फ़ाइलें लोड की जाती हैं।

अन्य संभावना क्लास्स्पैट वैरिएबल है जिसे आप केवल शैल सत्र के लिए मान्य करते हैं, न कि वैश्विक स्तर पर - इसलिए मैवेन कमांड इसे पढ़ नहीं रहा है। इसे विंडोज सिस्टम सेटिंग्स के माध्यम से सेट करने का प्रयास करें।