【问题标题】:Java Hibernate Error "Specified JDBC Driver com.microsoft.sqlserver.jdbc.SQLServerDriver class not found"Java Hibernate 错误“找不到指定的 JDBC 驱动程序 com.microsoft.sqlserver.jdbc.SQLServerDriver 类”
【发布时间】:2016-03-29 07:43:11
【问题描述】:

运行我的应用程序时出现错误,错误是:

找不到指定的 JDBC 驱动程序 com.microsoft.sqlserver.jdbc.SQLServerDriver 类

我的来源: pom.xml

    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-convention-plugin</artifactId>
        <version>2.3.20</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-rest-plugin</artifactId>
        <version>2.3.20</version>
    </dependency> 

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.1.Final</version>
        <classifier>tests</classifier>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.0.0.GA</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.4</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.1.0.CR2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.4</version>
    </dependency>

    <dependency>
        <groupId>com.microsoft.sqlserver.jdbc</groupId>
        <artifactId>sqljdbc4</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/src/main/lib/sqljdbc4.jar</systemPath>
    </dependency>

hibernate.cfg.xml

<hibernate-configuration>     
<session-factory> 

 <!-- Database connection settings -->  
    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>  
    <property name="connection.url">jdbc:sqlserver://.;database=db</property>  
    <property name="connection.username">sa</property>  
    <property name="connection.password">12345</property>   
    <property name="connection.pool_size">1</property>   
    <property name="dialect">org.hibernate.dialect.SQLServer2005Dialect</property>   
    <property name="show_sql">false</property>   
    <property name="hbm2ddl.auto">update</property>  

    <!-- Mapping files --> 
    <mapping resource="employee.hbm.xml"/> 

</session-factory> 

调用休眠的代码:

public static List<Employee> SelectAll(){ 
    Configuration cfg = new Configuration();  
    cfg.configure("hibernate.cfg.xml");
    SessionFactory factory = cfg.buildSessionFactory();  
    Session session = factory.openSession(); 

    //String sql_query= "from Employee where Name = 'Kevin'";
    String sql_query= "from Employee";
    Query query = session.createQuery(sql_query);
    List<Employee> employees = query.list();

    session.close();  
    factory.close(); 
    return employees;
}

有人知道为什么吗? 错误发生在 SessionFactory 工厂 = cfg.buildSessionFactory();

目录在:

当我检查库时,它有 SQLServerDriver

【问题讨论】:

    标签: java hibernate maven


    【解决方案1】:

    @Lumanyun 您正在使用存储库 Maven 中不存在的 jar:

    <dependency>
            <groupId>com.microsoft.sqlserver.jdbc</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>1.0</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/sqljdbc4.jar</systemPath>
        </dependency>
    

    去检查here一个可以帮助你的版本

    【讨论】:

    • 我不知道我的依赖有什么问题...但是有了这个它可以正常运行...谢谢兄弟!
    【解决方案2】:

    这是因为类路径中没有com.microsoft.sqlserver.jdbc.SQLServerDriver

    请检查类路径中的sqljdbc4.jar 并检查sqljdbc4.jar 内的com.microsoft.sqlserver.jdbc.SQLServerDriver 类。

    要查找类路径中带有SQLServerDriver 的任何jar,请尝试在Hibernate 配置代码之前执行此代码。

    URL driverUrl = Thread.currentThread().getContextClassLoader()
        .getResource(
        "com/microsoft/sqlserver/jdbc/SQLServerDriver.class");
    System.out.println(driverUrl);
    

    【讨论】:

    • 嗨,,它在类路径中有 SQLServerDriver ... Maven 有什么问题吗?因为在我使用没有 maven 的 sqljdbc4.jar 之前它做得很好
    • 我已经尝试过 driverURL,错误是一样的...我尝试导入 com.microsoft.sqlserver.jdbc.SQLServerDriver 并且它可以...:
    • @Lumanyun 你看到System.out.println(driverUrl);是哪条路径?
    • dirverUrl 返回错误 找不到指定的 JDBC 驱动程序 com.microsoft.sqlserver.jdbc.SQLServerDriver 类
    【解决方案3】:

    请检查您的类路径。驱动程序 jar 必须在类路径上。此问题与 java 无法在指定的类路径中找到类有关。将jar文件放在同一目录下或使其可查找。

    【讨论】:

    • 嗨,,它在类路径中有 SQLServerDriver ... Maven 有什么问题吗?因为在我使用没有 maven 的 sqljdbc4.jar 之前它做得很好
    【解决方案4】:

    正如上面 cmets 中已经说过的,首先你检查类是否存在于类路径中。因为根据异常,类路径中似乎缺少类文件。

    除此之外,我想指出一些不同的东西。按照惯例,您应该在 hibernate.cfg.xml 文件中使用属性名称为 hibernate.connection.driver_classhibernate.connection.url 等。 这里你只使用了connection.driver_class、connection.url等。

    【讨论】:

    • 嗨,,它在类路径中有 SQLServerDriver ... Maven 有什么问题吗?因为在我使用没有 maven 的 sqljdbc4.jar 之前它做得很好
    • hibernate.cfg.xml 中使用hibernate 前缀不是强制性的(与hibernate.properties 不同),但它当然是一种很好的风格。
    猜你喜欢
    • 2013-09-15
    • 1970-01-01
    • 2011-04-12
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2012-02-05
    相关资源
    最近更新 更多