使用Hibernate的问题 - 找不到JDBC驱动程序类:com.mysql.jdbc.Driver

问题描述:

当使用hibernate连接到MySQLDB并添加数据时,我有一个非常奇怪的问题。使用Hibernate的问题 - 找不到JDBC驱动程序类:com.mysql.jdbc.Driver

这是我的错误:

没有找到

JDBC驱动程序类: com.mysql.jdbc.Driver

这是我的hibernate.cfg.xml看起来像

<!DOCTYPE hibernate-configuration PUBLIC 
     "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/fpa-webapp</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> 
     <property name="hibernate.connection.username">root</property> 
     <property name="hibernate.connection.password"></property> 
     <property name="hbm2ddl.auto">update</property> 
     <property name="hibernate.show_sql">true</property> 
     <property name="hibernate.format_sql">true</property> 
    </session-factory> 
</hibernate-configuration> 

我不明白为什么我导航到应用程序时看到500错误;它表示找不到驱动程序。

HTTP ERROR 500

问题访问/ FPA-web应用/。 原因:

Exception constructing service 'ValueEncoderSource': Error invoking 

服务构建器方法 org.apache.tapestry5.services.TapestryModule.buildValueEncoderSource(地图, InvalidationEventHub)(在 TapestryModule.java:2287)(对于服务 'ValueEncoderSource'):错误调用 服务贡献法 org.apache.tapestry5.hibernate.HibernateModule.contributeValueEncoderSource(MappedConfiguration, 布尔,HibernateSessionSource, 会议,TypeCoercer,PropertyAccess, LoggerSource):异常构建 服务 'HibernateSessionSource': 错误调用服务构建器方法 org.apache.tapestry5.hibernate.HibernateCoreModule.buildHibernateSessionSource(记录器, 列表,RegistryShutdownHub)(在 HibernateCoreModule.java:123)(对于 服务 'HibernateSessionSource'): 找不到JDBC驱动程序类: com.mysql.jdbc.Driver

我敢肯定,司机是在类路径中。

它可能是什么?

+1

*“我确定司机在班级路径。”*你有多确定? :) – 2011-06-16 20:32:51

+1

它是一个Web应用程序或独立的,你是如何提供类路径? – stacker 2011-06-16 20:38:59

+0

这是一个网络应用程序。我确定驱动程序在那里,因为我打开了项目的类路径文件,并在那里看到带有驱动程序名称的.xml标记。 – sfrj 2011-06-16 23:51:17

您的驱动程序不在类路径中。

有两种方法,以确保它在classpath:

  1. 将它添加到全局lib目录。对于Tomcat,这是TOMCAT_HOME/lib
  2. 将其纳入战争。

这取决于您使用的要求。

如果您打算使用Tomcat来管理连接池,则需要将其添加到TOMCAT_HOME/lib,而不是直接在休眠配置中定义数据源,您将通过jndi来引用它。

唯一合理的解释是Driver类不在CLASSPATH上。

检查以确保mysql-connector-java(或其他相关的)jar确实在它将被加载的地方。如果你百分之百地肯定它,它可能有助于提供更多关于你如何知道课程被加载的信息,以便我们可以找出其他可能的原因。