ClassNotFoundException com.mysql.jdbc.Driver

0 votes
asked Oct 18, 2009 by dusk

This question might have asked here number of times . After doing some google search for the above error and doing some update, I can't understand why I'm still getting that error. I've already put my driver-- mysql-connector-java-5.1.5-bin in the classpath:

Java_Home\jre\lib\
Java_Home\jre\lib\ext\
Java_Home\lib

and the code which I'm using to connect to mysql database is:

try{
Class.forName("com.mysql.jdbc.Driver");

Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mail","root","");

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select message_body from deadletter");
String dbtime;
while (rs.next()) {
dbtime = rs.getString(1);
System.out.println(dbtime);
} 

con.close();

}
catch (SQLException e) {
        System.out.println("Connection Failed! Check output console");
        e.printStackTrace();
        }

    }

and the complete stacktrace of the above exception is:

java.lang.ClassNotFoundException: com.mysql.jdbc:Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)  
    at java.lang.Class.forName(Class.java:169)
    at mail.main(mail.java:114)  

Now, what's wrong I'm doing here?

19 Answers

0 votes
answered Oct 18, 2009 by bostone

The most common cause is that you have some conflict in where your classes are loaded from. For example if you have 2 locations and one has JDBC drivers and the other one not then if your classloader loads from the 1st location and some class from the 1st location wants to use the driver - the driver is not there. So look for the duplicate JARs that are using your driver

0 votes
answered Oct 18, 2009 by willfulwizard

I keep the mysql-connector jar with my project rather than in Javahome. As a result, you can be sure it can be found by being sure its in the local classpath. A big upside is that you you can more the project to another machine and not have to worry about (or forget) to set this up again. I personally like including it in version control.

0 votes
answered Oct 18, 2009 by pascal-thivent

What did you put exactly in lib, jre/lib or jre/lib/ext? Was it the jar mysql-connector-java-5.1.5-bin.jar or something else (like a directory)?

By the way, I wouldn't put it in lib, jre/lib or jre/lib/ext, there are other ways to add a jar to the classpath. You can do that by adding it explicitly the CLASSPATH environment variable. Or you can use the -cp option of java. But this is another story.

0 votes
answered Oct 28, 2010 by ismail-shepl

I have the same problem but I found this after a long search: http://www.herongyang.com/JDBC/MySQL-JDBC-Driver-Load-Class.html

But I made some change. I put the driver in the same folder as my ConTest.java file, and compile it, resulting in ConTest.class.

So in this folder have

ConTest.class
mysql-connector-java-5.1.14-bin.jar

and I write this

java -cp .;mysql-connector-java-5.1.14-bin.jar ConTest

This way if you not use any IDE just cmd in windows or shell in linux.

0 votes
answered Oct 2, 2012 by ruthreshwar

I too struggled with the same problem and finally got the solution for it. Just copy the MySql-Connector.jar into Tomcat's lib folder, and then remove the jar from the webapp's lib folder, and then, run the project.

0 votes
answered Oct 17, 2013 by luillyfe

Ok, i find solution changing the path of mysql-conector-java.jar to the follow path:

ProjectName/WebContent/Web-inf/lib/mysql-conector-java.jar 

So you need to add the conector to project again and delete the previous one.

0 votes
answered Oct 9, 2014 by user3619178

Ok..May be i can also contribute my solution.. Right click on project -properties -->Deployment assembly...there you need to add the mysql-connector-java.jar and apply it...which makes your prject configured with web-Libraries that has this sql connector...This worked for me.. I hope this works for you guys as well

0 votes
answered Oct 4, 2015 by kenneth-key

If you're facing this problem with Eclipse, I've been following many different solutions but the one that worked for me is this:

1) Right click your project folder and open up Properties.

2) From the right panel, select Java Build Path then go to Libraries tab.

3) Select Add External JARs to import the mysql driver.

4) From the right panel, select Deployment Assembly.

5) Select Add..., then select Java Build Path Entries and click Next.

6) You should see the sql driver on the list. Select it and click first.

And that's it! Try to run it again! Cheers!

0 votes
answered Oct 6, 2015 by commonsensecode

The only thing that worked for me was downloading the mysql-connector-java-5.0.8-bin.jar directly from the MySQL website:

http://dev.mysql.com/downloads/connector/j/3.1.html

Then if you're using Eclipse paste this mysql-connector-java-5.0.8-bin.jar in the WEB-INF lib folder

If doesn't works try with any of the solutions posted in this link: http://javarevisited.blogspot.com/2012/03/jdbc-javalangclassnotfoundexception.html

0 votes
answered Oct 9, 2015 by danysh-mushtaq

see to it that the argument of Class. forName method is exactly "com. mysql. jdbc. Driver". If yes then see to it that mysql connector is present in lib folder of the project. if yes then see to it that the same mysql connector . jar file is in the ClassPath variable (system variable)..

Welcome to Q&A, where you can ask questions and receive answers from other members of the community.
Website Online Counter

...