Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

ClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver

कोडClass.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")

फेंक नहीं सकताClassNotFoundException - com.microsoft.jdbc.sqlserver.SQLServerDriver

क्योंकि नाम अलग हैं। क्या यह संभव है कि आपने इसे अपने कोड में गलत तरीके से सेट किया हो?

मैंने उनकी वेबसाइट से sqljdbc41.jar डाउनलोड किया और देखा कि कक्षा का सही नाम com.microsoft.sqlserver.jdbc.SQLServerDriver है। ।

$ jar tf sqljdbc41.jar | grep SQLServerDriver.class
com/microsoft/sqlserver/jdbc/SQLServerDriver.class

मुझे अभी-अभी Microsoft के वेब दस्तावेज़ों पर दोनों नाम मिले हैं, इसलिए या तो उन्होंने किसी समय इस वर्ग का नाम बदल दिया (इसका पैकेज बदल दिया), या उनके कुछ दस्तावेज़ों में त्रुटियाँ हैं।

आपको बस इतना करना है कि .jar को टॉमकैट की lib निर्देशिका में छोड़ दें (उदा.apache-tomcat-7.0.67\lib ), और टॉमकैट को पुनरारंभ करें।

यदि आपके पास सही वर्ग का नाम है, और lib निर्देशिका में सही जार है, और अभी भी उस त्रुटि को देख रहे हैं, तो मुझे आश्चर्य है कि आपके ग्रहण सेटअप में किसी प्रकार का टाइपो है, और ग्रहण से तैनाती किसी भी तरह से लोड करने का प्रयास कर रही है खंडित वर्ग का नाम। (मैं एक्लिप्स का उपयोग नहीं करता, और मुझे वहां से तैनाती के बारे में पता नहीं है)।

एक बहुत ही सरल एप्लिकेशन बनाने का प्रयास करें (और एमएस ड्राइवर वर्ग के बारे में ग्रहण न बताएं):

@WebServlet("/")
public class SimpleServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // Set response content type
        resp.setContentType("text/html");
        PrintWriter out = resp.getWriter();
        out.println("<h1>" + "Welcome to the servlet!" + "</h1>");
        try {
            String server = "localhost";
            String database = "testDB";
            String password = "sapassword";

            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            String connectionUrl = "jdbc:sqlserver://"+server+":1433;databaseName="+database+";user=sa;password="+password+";";
            Connection con = (Connection) DriverManager.getConnection(connectionUrl);
        } catch (ClassNotFoundException e) {
            out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
        } catch (SQLException e){
            out.println("<h2>" + e.getClass().getSimpleName() + "_" + e.getMessage() + "</h2>");
        } finally {
            out.println("<h1>" + "That's the end of the servlet!" + "</h1>");
        }
    }
}

और इसे चला रहे हैं। यदि आप आउटपुट देखते हैं जैसे:

Welcome to the servlet!

SQLServerException_The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".

That's the end of the servlet!

इसका मतलब है कि ड्राइवर ने ठीक से लोड किया। कनेक्शन विफल रहा b/c मेरे पास परीक्षण करने के लिए वर्तमान में SQLServer इंस्टेंस नहीं चल रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एस्केपिंग कमांड पैरामीटर xp_cmdshell को dtexec में पास किया गया

  2. आप उसी सर्वर पर प्रतिलिपि के रूप में डेटाबेस का बैकअप और पुनर्स्थापना कैसे करते हैं?

  3. sql का उपयोग करके अल्फा और न्यूमेरिक को विभाजित करें

  4. ऑर्डर बाय क्लॉज के बिना SQL सेलेक्ट स्टेटमेंट का ऑर्डर

  5. एसक्यूएल चयन एचएच:एमएम - एचएच:एमएम