2010-10-24 18 views
17

मैं जावा में डेटाबेस से कनेक्ट करने के लिए H2 का उपयोग करने की कोशिश कर रहा हूं (ग्रहण आईडीई के रूप में उपयोग कर रहा हूं)। नमूना (नीचे) ClassNotFoundException फेंकता है। बात यह है कि, सिस्टम क्लासस्पैट में एच 2 जार फ़ाइल जोड़ें। मैंने कंसोल में printenv के माध्यम से कई बार जांच की है। क्या मैं एक कदम छोड़ रहा हूँ?जावा क्लास नॉटफाउंड एक्सेप्शन org.h2.Driver

कोड:

import java.sql.*; 

public class Program { 

/** 
    * @param args 
    */ 
public static void main(String[] args) 
    throws Exception{ 

    try{ 
    System.out.println("hello, world!"); 
    Class.forName("org.h2.Driver"); 
    Connection conn = DriverManager.getConnection("jdbc:h2:~/testdb", "sa", ""); 
    // add application code here 
    conn.close(); 
    }catch(ClassNotFoundException ex){ 
    System.out.println("ERROR: Class not found: " + ex.getMessage()); 

    } 
    System.exit(0); 

} 

} 
+0

करने के लिए (मैं एसबीटी का उपयोग करें) कैसे आप अपने classpath को जार जोड़ा है? यह सुनिश्चित करने के लिए, मैं 'lib' नामक अपनी प्रोजेक्ट में एक फ़ोल्डर बनाउंगा, इसमें जार की प्रतिलिपि बनाउंगा, फिर राइट क्लिक करें और 'पथ बनाएं> पथ बनाने के लिए जोड़ें' का चयन करें। – William

+0

क्या आप कृपया अपना कोड सही तरीके से प्रारूपित कर सकते हैं - कोड का चयन करें और संपादन मोड में संपादन टूलबार पर 5 वां बटन (कोड नमूना) का उपयोग करें। –

+0

आप अपना कोड कैसे चला रहे हैं? ग्रहण या कमांड लाइन के अंदर? आपने कक्षापथ में h2.jar कैसे जोड़ा? क्लासपाथ में h2.jar के अस्तित्व की जांच कैसे की? –

उत्तर

6

नमूना है (नीचे) एक ClassNotFoundException

तो चालक classpath पर नहीं है फेंकता है।

बात यह है कि मैंने सिस्टम क्लासस्पैट में एच 2 जार फ़ाइल जोड़ दी है। मैंने कंसोल में 'printenv' के माध्यम से कई बार जांच की है।

आपने यह कैसे किया? कृपया प्राप्त आउटपुट दिखाएं।

क्या मैं एक कदम छोड़ रहा हूं?

मैं प्रदान की गई जानकारी के साथ नहीं कह सकता। लेकिन CLASSPATH पर्यावरण चर पर भरोसा करना वैसे भी एक खराब अभ्यास है और यदि आप कमांड लाइन पर जावा चला रहे हैं तो आपको -cp विकल्प का उपयोग करना चाहिए। इस तरह:

java -cp h2.jar com.acme.Program 

वहाँ एक रास्ता मैं इतना है कि मैं कंसोल से हर समय चलाने के लिए की जरूरत नहीं है ग्रहण जार फ़ाइल का उपयोग करने जब मैं भागो मेनू का उपयोग निर्धारित कर सकते हैं है?

हां। ग्रहण के तहत, परियोजना निर्माण पथ पर जेएआर जोड़ें: अपनी परियोजना पर पर राइट-क्लिक करें गुण> जावा बिल्ड पथ> लिबरियां> जार जोड़ें ... (मान लें कि एच 2 जेएआर आपके प्रोजेक्ट के सापेक्ष निर्देशिका में उपलब्ध है)। अन्य आईडीई के पास ऐसा करने का समकक्ष तरीका है।

+0

धन्यवाद। मुझे नहीं पता था कि क्लासस्पैट खराब नीति थी। क्या मैं एक तरीका है जब मैं रन मेनू का उपयोग करते हुए जार फ़ाइल का उपयोग करने के लिए ग्रहण सेट कर सकता हूं ताकि मुझे हर समय कंसोल से भागना पड़े? –

25
मेरे मामले में

(असंबंधित एक सा है, लेकिन उल्लेख के लायक), मैं यह मेरी Maven पोम को जोड़ा गया, और त्रुटि संदेश चला गया:

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>xxx</version> <!-- ex: 1.2.140 --> 
    </dependency> 

या अगर आप केवल इकाई दौरान h2 उपयोग कर रहे हैं परीक्षण:

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>xxx</version> <!-- ex: 1.2.140 --> 
    <scope>test</scope> 
    </dependency> 
+1

मई परीक्षण 'जोड़ना चाहता है क्योंकि इस तरह से इसका उपयोग अक्सर किया जाता है। नवीनतम संस्करण यहां उपलब्ध है: http://www.h2database.com/html/main.html – GlenPeterson

4

हाल ही में मैं java.lang.ClassNotFoundException: org.h2.Driver अपवाद IntelliJ विचार 2017.2 ईएपी में एच 2 ड्राइवर का नवीनतम संस्करण (1.4.196) का उपयोग करते समय का सामना करना पड़ा। समाधान 1.4.1 9 5 तक डाउनग्रेड करना था जो काम करता था।

<dependency> 
    <groupId>com.h2database</groupId> 
    <artifactId>h2</artifactId> 
    <version>1.4.195</version> 
    <scope>test</scope> 
</dependency> 
1

<scope>[database_name]</scope> उस डेटाबेस को शामिल करना चाहिए जिसमें आप काम कर रहे हैं। यदि आप अपना डीबी एक से दूसरे में बदलते हैं, तो दायरे को भी बदलना सुनिश्चित करें। जैसे ही मैंने इसे बदल दिया, त्रुटि दूर हो गई।

1

मेरे मामले में परिवर्तन

libraryDependencies += "com.h2database" % "h2" % "1.4.196" % Test 

libraryDependencies += "com.h2database" % "h2" % "1.4.196" 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^