未找到指定的 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 juno 和 hibernate 4.1.6、mysql 连接器 5.1.24、jboss 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
连接器依赖项的部分?
Configuration configuration = new ..
行之前添加Class.forName("com.mysql.jdbc.Driver");
试过...但同样的例外
【参考方案1】:
检查您的hibernate.cfg.xml
文件是否正确指定了driver class
和dialect
:
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
(这些是<session-factory>
的属性)
然后,只需构建您的会话工厂:
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 文件夹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 类的主要内容,如果未能解决你的问题,请参考以下文章