How to resolve "Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL"

23,523

The JDBC URL is not correct, indeed you have a missing slash so try this:

jdbc:mysql://localhost:3306/autopark

If you check well the real error is No suitable driver which means that it cannot find any JDBC driver that supports the provided URL.

Share:
23,523
Serg Shapoval
Author by

Serg Shapoval

Java developer from Kharkiv city. knowledge of OOP and using it in real projects REST, SOAP JAVA, Hibernate, JSP, Spring Data,Spring MVC, Spring Security, Spring Boot(starter lvl) MySQL, Swing, JSoup, AEM (Adobe CQ), Sling, JCR, Apache Felix, Sightly, XStream, Liferay (portlets, web-content, structures, templates) AngularJS, JQuery, Bootstrap TDD(Mockito, PowerMockito, JUnit) an experience in developing MVC projects HTML5, CSS3(beginner) an experience in DB modeling (ER-notation) knowledge of Linux and Windows an experience in using Git an experience in teamworking (Scrum) JIRA IntelliJ IDEA, Eclipse, Android Studio

Updated on August 20, 2020

Comments

  • Serg Shapoval
    Serg Shapoval over 3 years

    Firstly I want to say that i checked all answers at stackoverflow, and i can't fix this bug! Help me please! I spend a lot of time, but no result. I'm trying to create connection pool using Tomcat8. I have an exception:

    java.sql.SQLException: Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL 'jdbc:mysql:/localhost:3306/autopark' at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2160) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2032) at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1532) at ua.khpi.shapoval.db.DbConnector.init(DbConnector.java:31) at ua.khpi.shapoval.db.DbContextListner.contextInitialized(DbContextListner.java:48) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4842) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5303) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLException: No suitable driver at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createConnectionFactory(BasicDataSource.java:2151) ... 13 more

    DbConnector.class

    public class DbConnector {
        private static Logger log = Logger.getLogger(DbConnector.class.getName());
        private static DataSource dataSource;
        private static Connection connection;
    
        public static void init() throws ServletException, SQLException, NamingException, ClassNotFoundException {
    
            Context initCtx = new InitialContext();
    
            Context envCtx = (Context) initCtx.lookup("java:comp/env/");
    
            DataSource ds = (DataSource) envCtx.lookup("jdbc/autopark");
            System.out.println(ds.getConnection());
        }
    
        public static Connection getConnection() throws SQLException {
    
            return dataSource.getConnection();
        }
    
    }
    

    context.xml that located in META-INF folder

        <?xml version="1.0" encoding="UTF-8"?>
    <Context crossContext="true" reloadable="true">
        <Resource name="jdbc/autopark" auth="Container" type="javax.sql.DataSource"
            username="root" password="161acid161" driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql:/localhost:3306/autopark" maxActive="15" maxIdle="3" />
        <ResourceLink name="jdbc/autopark" global="jdbc/autopark"
    
            type="javax.sql.DataSource" />
    
    </Context>
    

    web.xml file

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
        id="WebApp_ID" version="3.1">
        <display-name>Autostation</display-name>
        <welcome-file-list>
    
            <welcome-file>index.jsp</welcome-file>
    
        </welcome-file-list>
    
    
            <resource-ref>
    
                <description>Db</description>
    
                <res-ref-name>jdbc/autopark</res-ref-name>
    
                <res-type>javax.sql.DataSource</res-type>
    
                <res-auth>Container</res-auth>
    
            </resource-ref>
    
    
        <listener>
            <listener-class>ua.khpi.shapoval.db.DbContextListner</listener-class>
        </listener>
    </web-app>
    

    Content of my tomcat/lib directory and my project structure. enter image description here

    enter image description here

  • Serg Shapoval
    Serg Shapoval almost 8 years
    Man, I love you! Thanx a lot! One slash!!!!! I'm getting mad of this bug!
  • Erk
    Erk over 4 years
    Oh yeah. I got Cannot create JDBC driver of class 'com.mysql.cj.jdbc.Driver' for connect URL '"jdbc:mysql://127.0.0.1:3306/db"'... nope, property files should not have quotes of any kind in them... apparently :|
  • user3481644
    user3481644 over 2 years
    @Erk - A stray " was the cause of my problem, thanks!