加载 JDBC 驱动程序中的 classNotFoundException

Posted

技术标签:

【中文标题】加载 JDBC 驱动程序中的 classNotFoundException【英文标题】:classNotFoundException in Loading JDBC Driver 【发布时间】:2011-12-10 18:19:46 【问题描述】:

我是 Java 新手,我正在 Netbeans 6.9.1 IDE 上开发 Java EE 应用程序。我必须将我的 java 应用程序与 SQL Server 2005 连接。

为此,我已经下载了 sqljdbc.jar 文件并将其放入我系统上的C:\Program Files (x86)\Microsoft SQL Server\JDBC Drver\lib,并在命令提示符下设置了它的类路径,如下所示

set classpath=.;C:\Program Files (x86)\Microsoft SQL Server\JDBC Drver\lib\sqljdbc.jar

并通过右键单击主项目并选择其属性选择库在 IDE 中设置类路径。然后在编译选项卡中添加了一个sqljdbc.jar,但是当我执行这段代码时

import java.sql.*;
/**
 *
 * @author abc
 */
public class DBConnection

public Connection dbConnect(String db_connect_string)
        
                try
                

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

                        Connection conn =
                          DriverManager.getConnection(db_connect_string);

                        System.out.println("connected");
                        return conn;

                
                catch (Exception e)
                
                        System.out.println(e);
                    e.printStackTrace();
                        return null;
                
        

这行Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");给我ClassNotFound错误

【问题讨论】:

您的包裹中可能有错字。请尝试 'Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");' 【参考方案1】:

您需要查看随您的 SQL 服务器版本一起提供的 JDBC 驱动程序文档。在旧的SQL Server 2000 中,JDBC 驱动程序类名称就像你拥有的那样:

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

不过,自从SQL Server 2005之后,微软更改了JDBC驱动类名:

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

相应地修复它。

请注意,CLASSPATH 环境变量被 Netbeans 和所有其他体面的 Java 程序忽略。忘记它,甚至在你理解它为什么存在以及它的用途之前不要尝试设置它。

【讨论】:

【参考方案2】:

你可以试试:

set classpath=.;"C:\Program Files (x86)\Microsoft SQL Server\JDBC Drver\lib\sqljdbc.jar"

如果没有,请尝试将名称中带有空格的文件夹替换为短名称。要获取短名称,请尝试

dir /-n

【讨论】:

【参考方案3】:

如果您使用 Maven,可以尝试在 pom.xml 中添加以下内容:

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

【讨论】:

以上是关于加载 JDBC 驱动程序中的 classNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

无法隔离 Scala 批量数据加载应用程序中的 JDBC 内存泄漏

jdbc连接方法

Derby 在使用 Maven 时给出 ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver

Spring boot Oracle Gradle:无法加载驱动程序类:oracle.jdbc.OracleDriver

JDBC编程的步骤

Java JDBC