एंड्रॉइड पर mysql jdbc कनेक्टर से कनेक्ट करते समय ClassNotFoundException

मुझे कुछ जवाब मिले लेकिन कुछ भी उपयोगी नहीं था।

मैंने माइस्क्ल-कनेक्टर-जावा-5.1.7-bin.jar संदर्भित पुस्तकालयों और मेरी मुख्य कक्षा गतिविधि के लिए निम्न विधि को जोड़ा।

private void getServerData(String id, String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException, SQLException
{
    Log.i("Database Connection", " requesting data from server");

    Class.forName("com.mysql.jdbc.Driver").newInstance();               
    Connection con = DriverManager.getConnection("jdbc:mysql://10.0.2.2:3306/db_easy_maintenance", "root", "maintenance");
    Statement stm = con.createStatement();
    ResultSet rs = stm.executeQuery("SELECT Name FROM industrial_object");
    String entry;
    while(rs.next())
    {
        entry=rs.getString("Name");
        Log.i("Database Connection", "getting " + entry);
    }

    con.close();

}

मैं अपना ऐप शुरू करता हूं और java.lang.ClassNotFoundException प्राप्त करता हूं: com.mysql.jdbc. ड्रावर java.lang.Class.classForName पर।

अगर मैं कोशिश नहीं करता ... पकड़ो ... तो मुझे संकलन से पहले यह अपवाद मिलता है।

क्या गलत है?

0
जोड़ा संपादित
विचारों: 1
हाँ हाँ। संदर्भित पुस्तकालयों का मतलब है ग्रहण में "संदर्भित पुस्तकालय" -> पैकेज एक्सप्लोरर -> myproject
जोड़ा लेखक Hei Ranch, स्रोत
क्या आपने MySQL कनेक्टर जार को अपने क्लासपाथ में भी जोड़ा था? स्पष्ट नहीं है कि आपका मतलब क्या है "जोड़ा गया ... पुस्तकालयों के संदर्भ में"।
जोड़ा लेखक QuantumMechanic, स्रोत

5 उत्तर

यह काम नहीं कर सकता क्योंकि एंड्रॉइड थोड़ा अलग बाइटकोड का उपयोग करता है। यह जांचने के लिए कि क्या MySQL जेडीबीसी लाइब्रेरी का सही ढंग से Dalvik के प्रारूप में अनुवाद किया गया है। दलविक के एक में JVM बाइटकोड का अनुवाद करने के लिए dex नाम का एक टूल है। यदि जेडीबीसी ड्राइवर में कक्षाएं एंड्रॉइड वाले या कुछ देशी कोड के लिए पोर्टेबल नहीं हैं - तो आप इसे एंड्रॉइड में उपयोग नहीं कर सकते हैं

0
जोड़ा
इस उपकरण को नहीं ढूंढ सकता। यहां तक ​​कि Google उपयोगी प्रविष्टियां नहीं दिखाता है।
जोड़ा लेखक Hei Ranch, स्रोत

यह काम करना चाहिए, हो सकता है कि आपको किसी अन्य जावाएसडीके और एक और एंड्रॉइड प्लेटफ़ॉर्म के साथ प्रयास करना चाहिए।

0
जोड़ा
आप किस एसडीके की सिफारिश करते हैं?
जोड़ा लेखक Hei Ranch, स्रोत

सत्यापित करें कि लाइब्रेरी निर्यात की गई है ( .classpath फ़ाइल में exported = "true" विशेषता है)। आप एक्लिप्स में प्रोजेक्ट सेटिंग्स में उपयुक्त टैब में भी ऐसा कर सकते हैं।

0
जोड़ा
ठीक है कि मेरी कक्षापथ फ़ाइल है:
जोड़ा लेखक Hei Ranch, स्रोत
दुर्भाग्य से काम नहीं करते हैं
जोड़ा लेखक Hei Ranch, स्रोत

जेडीबीसी का एंड्रॉइड पर अक्सर उपयोग नहीं किया जाता है, और मैं निश्चित रूप से इसकी अनुशंसा नहीं करता।

जेडीबीसी उच्च बैंडविड्थ, कम विलंबता, अत्यधिक विश्वसनीय नेटवर्क कनेक्शन के लिए डिज़ाइन किया गया है (उदाहरण के लिए, डेटाबेस सर्वर से डेस्कटॉप, डेटाबेस सर्वर पर वेब अनुप्रयोग सर्वर)। मोबाइल डिवाइस इनमें से कुछ प्रदान करते हैं, और उनमें से कोई भी लगातार नहीं।

तो जिस विकल्प का मैं आपको सलाह देता हूं वह इस पर निर्भर करता है:

अपने डेटाबेस के आस-पास एक वेब सेवा बनाएं और एंड्रॉइड से उस तक पहुंचें।

साइड लाभ के रूप में, आप सुरक्षा में सुधार करते हैं (बनाम आपके डेटाबेस को छोड़कर), क्लाइंट से कुछ व्यावसायिक तर्क ऑफ़लोड कर सकते हैं, अन्य प्लेटफ़ॉर्म (उदाहरण के लिए, वेब या वेब-आधारित मोबाइल ढांचे) आदि का बेहतर समर्थन कर सकते हैं।

0
जोड़ा
@K_Anas: क्या आप कृपया जो कहा है उसका कोड नमूना दिखा सकते हैं? मेरा मतलब है MySQL डीबी तक पहुंचने के लिए वेब सेवा बनाना।
जोड़ा लेखक GAMA, स्रोत
मुझे पता है और मेरे पूर्व संस्करण इस प्रकार के कनेक्शन का इस्तेमाल करते थे, लेकिन मेरे मालिक अलग सोचते हैं। हम केवल एक लैन कनेक्शन का उपयोग करते हैं और इस ऐप को प्रकाशित नहीं करना चाहते हैं।
जोड़ा लेखक Hei Ranch, स्रोत

see: http://developer.android.com/search.html#q=dx&t=0 and Android JDBC not working: ClassNotFoundException on driver - my answer on the bottom gives ridiculously specific instructions, although I am curious how switching to 1.6 was useful.

0
जोड़ा
ठीक है, मैंने mysql-connector-java-5.1.7 के बजाय अपनी लाइब्रेरी का उपयोग किया
जोड़ा लेखक Hei Ranch, स्रोत
mysql-connector-java-5.1.20 मेरे लिए भी बुरा था
जोड़ा लेखक Hei Ranch, स्रोत