未找到指定的 JDBC 驱动程序 com.mysql.jdbc.Driver 类

Posted

技术标签:

【中文标题】未找到指定的 JDBC 驱动程序 com.mysql.jdbc.Driver 类【英文标题】:Specified JDBC Driver com.mysql.jdbc.Driver class not found 【发布时间】:2013-07-05 01:13:17 【问题描述】:

我正在使用 eclipse junohibernate 4.1.6mysql 连接器 5.1.24jboss 7.1.1 em>。

我尝试了this 和this(作为一个模块)。

我在WEB-INF/lib 文件夹中有连接器JAR,我也试过一次没有它。一切都失败了。我不知道如何解决这个问题。整个堆栈跟踪:

18:35:44,284 ERROR [stderr] (http-localhost-127.0.0.1-8080-1) Error creating Session: org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver class not found

连接器是一个类路径,它位于 Maven 依赖库中。我把它放在 lib 文件夹和系统库中......没有任何作用。

public class HibernateUtil 

private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;

static

    try
    
        Configuration configuration = new Configuration().configure("hibernate.cfg.xml");
        serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
    catch (HibernateException he)
    
        System.err.println("Error creating Session: " + he);
        throw new ExceptionInInitializerError(he);
    

【问题讨论】:

首先,避免像这样的cmets请帮忙!!求救!。其次,你说你已经添加了到 Maven 的 pom.xml 的连接。你可以发布你的 pom.xml 吗?或者至少是您指定 MySQL 连接器依赖项的部分? mysqlmysql-connector-java5.1.24 这似乎是对的。请编辑您的问题并发布您使用 MySQL 连接器初始化数据库连接的部分 尝试在Configuration configuration = new .. 行之前添加Class.forName("com.mysql.jdbc.Driver"); 试过...但同样的例外 【参考方案1】:

检查您的hibernate.cfg.xml 文件是否正确指定了driver classdialect

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

(这些是&lt;session-factory&gt; 的属性)

然后,只需构建您的会话工厂:

sessionFactory = new Configuration().configure().buildSessionFactory();

如果应用程序仍然没有看到连接器的 Maven 依赖项,请尝试进行全新安装,然后在检查项目的库列表后,MySQL Connector 出现在那里。

【讨论】:

im 使用 hibernate 4.1.6...buildSessionFactory 已弃用。hibernate.cfg.xml 是正确的 是的,没关系。仍然支持已弃用的类/方法。弃用的唯一作用是警告当下一个主要版本的休眠出现时代码将无法工作。我已将未弃用的代码作为单独的答案添加到婴儿床。 它仍然不适用于那个 buildSessionFactory...同样的异常 您是否进行了全新安装?您是否检查过该库是否出现在您的类路径中?【参考方案2】:

请检查您的 mysql 连接器版本是否与您系统上安装的 mysql db 兼容。例如mysql 连接器版本 5.1.26 与 mysql 5.6.25 兼容,而 5.1.34 不兼容。

【讨论】:

【参考方案3】:

尝试将连接器添加到构建路径作为外部 jar 或者,创建一个 lib 文件夹并将连接器 jar 放入其中,然后将 Add Library 到您的构建路径并提供该连接器 lib 文件夹路径。

【讨论】:

我尝试了所有这些...没有任何效果...我在 WEB-Inf/classes 中有一个 lib 文件夹..还不够...我还尝试了我的 jboss 的 lib 文件夹 mysqlmysql-connector-java5.1.24 清单文件无需更改。只是,您的程序无法获取 mysql 连接器 jar 文件。查看您的项目结构和构建路径会有所帮助。尝试提供任何快照或其他东西,以便我可以进一步提供帮助【参考方案4】:
Configuration configuration = new Configuration();
configuration.configure();
ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration.getProperties());
sessionFactory = configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
// end of static block

public static SessionFactory getSessionFactory() 
    return sessionFactory;

【讨论】:

以上是关于未找到指定的 JDBC 驱动程序 com.mysql.jdbc.Driver 类的主要内容,如果未能解决你的问题,请参考以下文章

我没有找到数据源名称并且没有指定默认驱动程序

Oracle JDBC 驱动程序 » 10.2.0.2.0 给出页面未找到 [重复]

JDBC

捆绑服务组合:org.sqlite.JDBC 未找到

Java JDBC

Java JDBC