无法构建 EntityManagerFactory + 找不到 JDBC 驱动程序类

Posted

技术标签:

【中文标题】无法构建 EntityManagerFactory + 找不到 JDBC 驱动程序类【英文标题】:Unable to build EntityManagerFactory + JDBC Driver class not found 【发布时间】:2013-10-18 19:43:21 【问题描述】:

我有这个项目,我正在使用 hibernate、maven、gwt、JPA、Tomcat 和 spring、mysql。无论如何,我一直试图解决这个错误,但没有成功。 我已经配置了我的 mysql 连接器“mysql-connector-java” 这是我的错误:

Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: projetA] Unable to build EntityManagerFactory
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:892)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at com.pac.projetA.shared.Dto.Main.main(Main.java:14)
Caused by: org.hibernate.HibernateException: JDBC Driver class not found: org.mysql.jdbc.Driver
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:89)
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
    at org.hibernate.ejb.InjectionSettingsFactory.createConnectionProvider(InjectionSettingsFactory.java:51)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2163)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2159)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1383)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:954)
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:883)
    ... 4 more
Caused by: java.lang.ClassNotFoundException: org.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:84)
    ... 12 more
    enter code here

【问题讨论】:

你是如何配置jar的? 我在类路径中添加了 jar + 我在 pom.xml 中添加了依赖项 我建议你不要两者都做。 我试过了,还是不行:( 显然您的类路径设置不正确。玩弄它。 【参考方案1】:

我记得你使用的是 maven。如果您的 pom.xml 中有以下条目,请确保清理并构建项目并重新启动服务器以获取对类路径的更改

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

顺便说一句,这家伙有一些很好的教程

这是一个如何使用hibernate、maven和mysql

http://www.mkyong.com/spring/maven-spring-hibernate-annotation-mysql-example/

【讨论】:

以上是关于无法构建 EntityManagerFactory + 找不到 JDBC 驱动程序类的主要内容,如果未能解决你的问题,请参考以下文章

创建 entityManagerFactory 时出错。无法构建 Hibernate SessionF.SchemaManagementException:导出标识符 [new_user] 遇到多次

如何修复'无法检索unitName null的EntityManagerFactory'

在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误

Jenkins 无法创建 entityManagerFactory

字段存储库需要一个名为“entityManagerFactory”的 bean,但无法找到

Spring Boot - 存储库字段需要一个名为“entityManagerFactory”的 bean,但无法找到