Hibernate does not find mysql JDBC "Driver" class in Maven project

Asked

Viewed 794 times

2

Hello guys I created a Maven project in eclipse (with WAR packaging) and imported the packages of models already mapped from another project, soon after I created a class to "load" a persistence factory but it returns the following error:

set 19, 2017 10:02:47 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:267)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:231)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352)
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:847)
    at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:874)
    at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:58)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:55)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:39)
    at com.bluegestao.audisped.jpa.util.JpaUtilMaster.<clinit>(JpaUtilMaster.java:22)
    at Main.main(Main.java:7)
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [value=com.mysql.jdbc.Driver]
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:160)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:116)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:100)
    at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:72)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:240)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:257)
    ... 15 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : value=com.mysql.jdbc.Driver
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.findClass(ClassLoaderServiceImpl.java:217)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:226)
    ... 27 more
Exception in thread "main" java.lang.NullPointerException
    at com.bluegestao.audisped.jpa.util.JpaUtilMaster.getEntityManager(JpaUtilMaster.java:29)
    at Main.main(Main.java:7)

Because I was using Maven this error was not supposed to be happening, I also tested the models in another project with functional Hibernate and had no problems (no mapping error) Have I seen people solve adding to the classpath of the project more so it wouldn’t be a kind of bad practice? since if the idea of you having a dependency manager wouldn’t be him doing this work for you? by the way I use Tomcat.

Pom used:

 <project xmlns="http://maven.apache.org/POM/4.0.0 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bluegestao</groupId>
    <artifactId>Projeto</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>
        <!--Hibernate(implementação do JPA) -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.3.Final</version>
        </dependency>

        <!--Drive JDBC do banco MySQL -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.34</version>
        </dependency>

        <!--Primefaces - Implementação 6.0 -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.0</version>
        </dependency>

        <!--Implementação do JSF -->
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.faces</artifactId>
            <version>2.2.14</version>
        </dependency>

    </dependencies>

    <repositories>
        <repository>
            <id>prime-repo</id>
            <name>Primefaces Maven Repository</name>
            <url>http://repository.primefaces.org</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

 </project>
  • 1

    Post the code of your pom.xml, Make sure the mysql jar is in your local . m2 folder

  • The header did not appear but the content is there, it is yes I have already deleted everything from the Repository folder and generated again but I was not successful.

  • @William.Andrade was just a format adjustment =] I always prefer to put code in blocks that start with 4 spaces. Put inside the tag <code> does not have the expected effect

  • To see the execution classpath: for (URL url: ((URLClassLoader) (Thread.currentThread().getContextClassLoader())).getURLs()) { url.getPath(); }; so it is possible to know which jars loaded

  • @Jeffersonquesado thanks for the answers and edits, but I had to format my computer here in the company and for some reason I had no problems running the same code, I was using Ubuntu and now I’m using Deepin and I had no problems with Hibernate, Do you have any idea what happens to a question that has no solution here? kk

1 answer

2

As you are climbing your application on a Tomcat server common libraries should be configured in the folder /lib server as is the case with mysql.

Add the jar to the folder /lib Tomcat

To find the path of the lib va folder to the file /conf/Catalina.properties and search the property common Loader.

  • Thanks for answering but as I told the friend above I needed to format the machine here and when I ran the same code I had no problems, but take me a question, doing as you said I would have to declare my dependencies as provided isn’t it? I thought only application servers had this option, good to know anyway

Browser other questions tagged

You are not signed in. Login or sign up in order to post.