जब मैं अपना स्कैला कोड चलाता हूं तो मुझे यह संदेश त्रुटि होती है:

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

यहाँ मेरा कोड:


object ScalaJdbcConnectSelect extends App {
  val url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXX)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=XXX)(PORT=1521))(FAILOVER=on)(LOAD_BALANCE=on))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XXX)))"
  val driver = "oracle.jdbc.driver.OracleDriver"
  val username = "XXX"
  val password = "XXX"
  var connection:Connection = _
  try {
    Class.forName(driver)
    connection = DriverManager.getConnection(url, username, password)
    val statement = connection.createStatement
    val rs = statement.executeQuery("SELECT * FROM TABLE WHERE ID = 1")
    while (rs.next) {
      val host = rs.getString("ID")
      val user = rs.getString("Field")
      println("ID = %s, Field = %s".format(host,user))
    }
  } catch {
    case e: Exception => e.printStackTrace
  }
  connection.close
}

मैं ojdbc6.jar डाउनलोड करता हूं (डेटाबेस ऑरैकल संस्करण 11 है) और प्रोजेक्ट स्ट्रक्चर> प्रोजेक्ट सेटिंग्स> मॉड्यूल में मैं अपना जार जोड़ता हूं (जो लाइब्रेरी टैब में दिखाई देता है) लेकिन मेरी त्रुटि अभी भी होती है।

मैंने oracle.jdbc.driver.OracleDriver को oracle.jdbc.OracleDriver में बदलने की कोशिश की लेकिन यह कुछ भी बदल देता है।

मुझे पता है कि मेरे डेटाबेस कनेक्शन की कॉन्फ़िगरेशन अच्छी है क्योंकि मैं डीबी ब्राउज़र के माध्यम से कनेक्ट कर सकता हूं और कुछ एसक्यूएल अनुरोध का परीक्षण कर सकता हूं।

क्या मुझसे कुछ छूटा ? मैं Scala . के साथ नया हूँ

1
LynxWeb 21 जिंदा 2020, 20:19
आप अपना स्कैला कोड कैसे चलाते हैं? त्रुटि इंगित करती है कि ड्राइवर रनटाइम क्लासपाथ पर नहीं है।
 – 
Mark Rotteveel
22 जिंदा 2020, 12:15
Intellij के टर्मिनल के साथ, मैं "scalac ScalaJdbcConnectSelect" और फिर "scala ScalaJdbcConnectSelect" करता हूं। मैं पहले से ही ProjectSettings > निर्भरता टैब के माध्यम से ojdbc6.jar जोड़ता हूं और मैं अपना जार जोड़ने के लिए "+" पर क्लिक करता हूं। (मैं इसे अपनी पोस्ट में समझाता हूं)। मैं कैसे जांच सकता हूं कि रनटाइम क्लासपाथ पर क्या है?
 – 
LynxWeb
22 जिंदा 2020, 16:18
1
यदि आप टर्मिनल के माध्यम से निष्पादित करते हैं, तो आप scala (और उस मामले के लिए scalac) के लिए क्लासपाथ घोषित करने के लिए जिम्मेदार हैं, उदाहरण के लिए scala -classpath <list of jars> ScalaJdbcConnectSelect, स्कैला दुभाषिया में जार फ़ाइल शामिल करें
 – 
Mark Rotteveel
22 जिंदा 2020, 16:53
हां !! scala -classpath <जार की सूची> ScalaJdbcConnectSelect ने मेरी समस्या हल कर दी !!
 – 
LynxWeb
22 जिंदा 2020, 17:05

2 जवाब

सबसे बढ़िया उत्तर

मैंने अपनी समस्या हल कर ली !!

समाधान के लिए @Mark Rotteveel को धन्यवाद:

यदि आप टर्मिनल के माध्यम से निष्पादित करते हैं, तो आप स्कैला के लिए क्लासपाथ घोषित करने के लिए ज़िम्मेदार हैं (और उस मामले के लिए स्केलैक के लिए), उदाहरण के लिए स्कैला -क्लासपाथ स्कैलाजेडीबीसीकनेक्ट चयन करें

0
LynxWeb 22 जिंदा 2020, 17:07

स्पष्ट रूप से क्लासपाथ से संबंधित समस्या प्रतीत होती है। आम तौर पर मैं आपके निर्भरता प्रबंधन के संबंध में स्पष्टीकरण मांगूंगा लेकिन फ़ोरम अनुमति नहीं देता

अपने पैकेज में oracle.jdbc.driver.OracleDriver आयात करने का प्रयास करें

-1
2x_sham_y 21 जिंदा 2020, 22:37