2010-10-09 5 views
25

जब मैं एक एसबीटी सत्र के दौरान पहली बार के लिए अपने प्रोजेक्ट चलाने के लिए, यह निम्न अपवाद है जब एक MySQL डेटाबेस के लिए उपयोग करने के लिए कोशिश कर फेंकता एक ही एसबीटी सत्र), यह एक अलग से एक फेंकता है:एसबीटी स्कैला परियोजना में MySQL जेडीबीसी ड्राइवर का उपयोग कैसे करें?</p> <blockquote> <p>java.lang.NoClassDefFoundError: scala/Ordered</p> </blockquote> <p>जब मैं इसे फिर से चलाने (और यह बाद किसी भी समय, के दौरान:

java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/...

जब मैं NetBeans उपयोग कर रहा था, एक ही कोड ठीक काम कर रहा था। अब, जैसा कि मैं अपने प्रोजेक्ट को मैन्युअल रूप से संपादित और प्रबंधित करने के लिए बिल्डिंग और केट के लिए एसबीटी का उपयोग करता हूं, मुझे इन रनटाइम त्रुटियां मिलती हैं।

MySQL जेडीबीसी चालक (MySQL.com से डाउनलोड किया गया) JAR प्रोजेक्ट की lib निर्देशिका में है और मैंने जो अन्य सभी पुस्तकालयों को वहां रखा है, ठीक है।

import java.sql._ 
... 
// read 
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...") 
val st : Statement = dbc.createStatement 
val rs : ResultSet = st.executeQuery("SELECT ...") 
if(rs.first) result = rs.getDouble("field") 
dbc.close 
... 
// write 
val dbc : Connection = DriverManager.getConnection("jdbc:mysql://localhost/...") 
val st : Statement = dbc.createStatement 
st.execute("UPDATE ...") 
dbc.close 

मैं एक question कि सुंदर संबंधित लग रहा है देखा है, लेकिन अभी भी कोई जवाब नहीं:

यहाँ कोड है।

// Declare MySQL connector Dependency 
    val mysql = "mysql" % "mysql-connector-java" % "5.1.12" 

यह MySQL के लिए JDBC ड्राइवर JAR फ़ाइल आयात होगा:

उत्तर

25

एसबीटी परियोजना वर्ग में एक लाइन होना चाहिए।

क्या आपने ड्राइवर लोड किया था? आप कनेक्शन लाने के लिए इस util वर्ग का उपयोग करते हैं, ड्राइवर लोड किया जाएगा ठीक एक समय:

// Util Class 
object DaoUtil { 
    import java.sql.{DriverManager, Connection} 

    private var driverLoaded = false 

    private def loadDriver() { 
    try{ 
     Class.forName("com.mysql.jdbc.Driver").newInstance 
     driverLoaded = true 
    }catch{ 
     case e: Exception => { 
     println("ERROR: Driver not available: " + e.getMessage) 
     throw e 
     } 
    } 
    } 

    def getConnection(dbc: DbConnection): Connection = { 
    // Only load driver first time 
    this.synchronized { 
     if(! driverLoaded) loadDriver() 
    } 

    // Get the connection 
    try{ 
     DriverManager.getConnection(dbc.getConnectionString) 
    }catch{ 
     case e: Exception => { 
     println("ERROR: No connection: " + e.getMessage) 
     throw e 
     } 
    } 
    } 
} 

कोड एक सरल एसबीटी से लिया जाता है - MySQL ट्यूटोरियल मैं कुछ समय पहले लिखा था। आप पूरा ट्यूटोरियल डाउनलोड करने के लिए चाहते हैं, http://github.com/ollekullberg/SimpleOrder

+1

एक ही समस्या थी, यह इसे ठीक करता है! – Albert

+0

एक ही समस्या और यह फिक्स काम नहीं कर रहा है – wedens

11

देखने परियोजना में/plugins.sbt फ़ाइल एक लाइन

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.12" 

तो अगर आपके एसबीटी खोल में, उसे पुन: प्रारंभ जोड़ें।

1

MySQL निर्भरता को आपके build.sbt में कॉन्फ़िगर किया जाना चाहिए। वर्तमान में शैली इतनी तरह पुस्तकालय निर्भरता घोषित करने के लिए है: Seq mysql जोड़ने के लिए अंदर

libraryDependencies ++= { 
    val liftVersion = "2.5.1" 
    Seq(
    "net.liftweb"  %% "lift-webkit"  % liftVersion  % "compile", 
    "net.liftweb"  %% "lift-mapper"  % liftVersion  % "compile", 
    //etc 
) 
} 

निम्नलिखित जोड़ें:

"mysql" % "mysql-connector-java" % "5.1.+" 

नोट + इसका मतलब है कि यह नवीनतम लघु संस्करण मिल जाएगा; 5.1 से ऊपर कुछ भी, जैसे 5.1.27 (लेखन के समय वर्तमान संस्करण)।