How to resolve "Cannot create JDBC driver of class 'com.mysql.jdbc.Driver' for connect URL"
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.
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, 2020Comments
-
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.
-
Serg Shapoval almost 8 yearsMan, I love you! Thanx a lot! One slash!!!!! I'm getting mad of this bug!
-
Erk over 4 yearsOh 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 over 2 years@Erk - A stray " was the cause of my problem, thanks!