Hibernate - ClassNotFoundException:com.mysql.jdbc.Driver

时间:2021-09-01 22:49:30

I'm trying to retrieve data from a MySQL database through Hibernate, but I'm stuck with this error:

我试图通过Hibernate从MySQL数据库中检索数据,但是我遇到了这个错误:

Failed to create sessionFactory object.org.hibernate.service.classloading.spi.ClassLoadingException: Specified JDBC Driver com.mysql.jdbc.Driver could not be loaded

java.lang.ClassNotFoundException: Could not load requested class : com.mysql.jdbc.Driver
[...]

I use a class called DAOFactory to get the hibernate session:

我使用一个名为DAOFactory的类来获取hibernate会话:

public class DAOFactory {

    private static boolean isInstance = false;  
    private static SessionFactory sessionFactory;
    private static ServiceRegistry serviceRegistry; 
    private static Session session;

    private DAOFactory() throws ExceptionInInitializerError{        
        if( !isInstance ) {
            try {               
                Configuration cfg   = new Configuration().configure();              
                serviceRegistry     = new ServiceRegistryBuilder().applySettings(cfg.getProperties())
                                                .buildServiceRegistry();
                sessionFactory      = cfg.buildSessionFactory(serviceRegistry);
            } catch (Throwable ex) {
                System.err.println("Failed to create sessionFactory object."+ ex);
                throw new ExceptionInInitializerError(ex);
            }
            session = sessionFactory.openSession();         
            isInstance = true ;
        }               
    }

    public static DAOFactory getInstance() {        
        return new DAOFactory() ;
    }

    public Session getSession() {
        return session ;
    }
}

hibernate.cfg.xml:

hibernate.cfg.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory name="">
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/enigma</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.pool_size">1</property>
        <property name="current_session_context_class">thread</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
    </session-factory>
</hibernate-configuration>

And mysql-connector-java-5.1.26-bin.jar is already in the classpath:

和mysql-connector-java-5.1.26-bin。jar已经在类路径中:

Hibernate - ClassNotFoundException:com.mysql.jdbc.Driver

Does anyone see what I'm missing ?

有人看到我错过了什么吗?

2 个解决方案

#1


24  

Thanks to Reimeus for the answer. mysql-connector-java-5.1.26-bin.jar needs to be in the runtime classpath.

感谢赖默斯的回答。mysql-connector-java-5.1.26-bin。jar需要在运行时类路径中。

Run -> Run Configurations... -> Classpath -> Add external JAR.

运行- >运行配置…->类路径->添加外部JAR。

Clean everything, try again, and the Exception is gone.

清理一切,再次尝试,异常消失。

#2


16  

For those who use Maven: add the following dependency in pom.xml.

对于那些使用Maven的人:在pom.xml中添加以下依赖项。

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

or choose another version from here.

或者从这里选择另一个版本。

Then you can get the artifact using:

然后您可以使用:

mvn dependency:resolve

(if you don't use the IDE).

(如果不使用IDE的话)。

#1


24  

Thanks to Reimeus for the answer. mysql-connector-java-5.1.26-bin.jar needs to be in the runtime classpath.

感谢赖默斯的回答。mysql-connector-java-5.1.26-bin。jar需要在运行时类路径中。

Run -> Run Configurations... -> Classpath -> Add external JAR.

运行- >运行配置…->类路径->添加外部JAR。

Clean everything, try again, and the Exception is gone.

清理一切,再次尝试,异常消失。

#2


16  

For those who use Maven: add the following dependency in pom.xml.

对于那些使用Maven的人:在pom.xml中添加以下依赖项。

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

or choose another version from here.

或者从这里选择另一个版本。

Then you can get the artifact using:

然后您可以使用:

mvn dependency:resolve

(if you don't use the IDE).

(如果不使用IDE的话)。