簡體   English   中英

com.microsoft.sqlserver.jdbc.SQLServerDriver 未找到錯誤

[英]com.microsoft.sqlserver.jdbc.SQLServerDriver not found error

我正在嘗試從 Java 連接到我的 SQL Server 2008 數據庫,我在這個線程中遇到了同樣的問題。

String userName = "xxxx";
String password = "xxxx";
String url = "jdbc:sqlserver:xxx.xxx.xxx.xxx;databaseName=asdfzxcvqwer;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection = DriverManager.getConnection(url, userName, password);

每當我嘗試從Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");加載驅動程序時,我都會收到ClassNotFoundException

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1713)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at repositories.RepositoryBase.<init>(RepositoryBase.java:22)
    at repositories.ProductsRepository.<init>(ProductsRepository.java:13)
    at api.Products.init(Products.java:31)
    at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1280)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1193)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我已確保將必要的 jdbc 和 jtds 驅動程序添加到庫中,並且還設置了 CLASSPATH。 老實說,我不確定這里出了什么問題。在此處輸入圖像描述

編輯:根據建議,我嘗試下載此jdbc jar並將其放在我的 WEB-INF/lib 中,然后將我的 CLASSPATH 變量設置為該位置。 盡管如此,同樣的問題正在發生。在此處輸入圖像描述

Edit2:沒關系,完全重新安裝 Eclipse 使其工作。 這很令人沮喪...

您不需要在類路徑中同時使用jTDS和JDBC。 任何一個都是必需的。 在這里你只需要sqljdbc.jar

另外,我建議將sqljdbc.jar放在項目的/WEB-INF/lib目錄的物理位置,而不是通過IDE將它添加到Classpath中。 然后Tomcat會照顧其余部分。 並嘗試重啟Tomcat。

您可以從以下網址下載Jar: www.java2s.com/Code/JarDownload/sqlserverjdbc/sqlserverjdbc.jar.zip

編輯:

在連接時提供用戶名和密碼,

您只需要jdbc:sqlserver://localhost:1433;databaseName=test ,Skip integratedSecurity屬性。

您正在查看sqljdbc4.2版本,如:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

但是,對於sqljdbc4版本語句應該是:

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

我想如果您更改第一個版本以編寫正確的Class.forName ,您的應用程序將運行。

對我來說,一旦我改變了它就起作用了

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

至:

在POM

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.1.0.jre8</version>
</dependency>

然后:

import com.microsoft.sqlserver.jdbc.SQLServerDriver;

...

DriverManager.registerDriver(SQLServerDriver());    
Connection connection = DriverManager.getConnection(connectionUrl); 

這是你的答案

String userName = "xxxx";
    String password = "xxxx";
    String url = "jdbc:sqlserver:xxx.xxx.xxx.xxx;databaseName=asdfzxcvqwer;integratedSecurity=true";

    try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            connection = DriverManager.getConnection(url, userName, password); 

  } catch (Exception e)
  {
     e.printStackTrace();
  }
public static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=dbName";
public static final String USERNAME = "xxxx";
public static final String PASSWORD = "xxxx";

/**
 *  This method
    @param args     command line argument
*/
public static void main(String[] args)
{
   try
   {
        Connection connection;
        DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver());   
        connection = DriverManager.getConnection(MainDriver.URL,MainDriver.USERNAME,
                        MainDriver.PASSWORD);
        String query ="select * from employee";
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(query);
        while(resultSet.next())
        {
            System.out.print("First Name: " + resultSet.getString("first_name"));
            System.out.println("  Last Name: " + resultSet.getString("last_name"));                
        }
   }catch(Exception ex)
   {
        ex.printStackTrace();
   }
}

對我來說,它在將sqljdbc4-2.jar手動復制到WEB-INF / lib文件夾后起作用。 所以請試試這個。

intellij idea 2019

  1. 下載用於SQL Server的Microsoft JDBC驅動程序

https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-2017

  1. 解壓縮(“C:\\ opt \\ sqljdbc_7.2 \\ enu \\ mssql-jdbc-7.2.2.jre11.jar”)
  2. 加; (文件 - >項目結構 - >全球圖書館)
  3. 使用; (將Jar文件添加到IntellijIdea類路徑(看視頻)) 加 import com.microsoft.sqlserver.jdbc.SQLServerDriver; 在此輸入圖像描述 https://youtu.be/-2hjxoRKsyk

或者ub Gradle設置“編譯”編譯組:'com.microsoft.sqlserver',name:'mssql-jdbc',version:'7.2.2.jre11'

對我來說這是一個錯誤的maven依賴減速,所以這是正確的方法:

對於sqljdbc4使用: sqljdbc4依賴

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

對於sqljdbc42使用: sqljdbc42依賴

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc42</artifactId>
    <version>6.0.8112</version>
</dependency>

我的代碼庫有

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>4.0</version>
    </dependency>

它正在提取舊版本的mssql-jdbc

我用下面的依賴項替換了它,它起作用了。

    <dependency>
        <groupId>com.microsoft.sqlserver</groupId>
        <artifactId>mssql-jdbc</artifactId>
        <version>7.4.1.jre8</version>
    </dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM