java.lang.ClassNotFoundException: com.mysql.jdbc.Driver error even after importing library

22,699

Solution 1

Everybody repeat after me. ( :-) )

"java.lang.ClassNotFoundException: com.mysql.jdbc.Driver" is NOT a compilation error.

Therefore, changing the >>build<< path or adding an import cannot fix the problem.

The solution is to make sure that the JAR file is on the classpath when you run the application. For example, if your test class is in bin\database\Main.class and the driver JAR is in lib ...

$ java -classpath bin:lib/mysql-connector-java-5.1.39.jar database.Main

Solution 2

Some of the most possible reasons of "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver" in your code are:

  1. You don't have mysql-connector.jar in your Classpath.
  2. mysql-connector.jar is in your classpath but somehow your classpath is getting overridden.
  3. mysql-connector.jar is in classpath but current user doesn't have read permission.

Solution 3

If the jar is already added to your external libs, you can simply add :

import com.mysql.jdbc.Driver;

and it shall work in your class.

This shall help further SO-21580499

Solution 4

It looks like you app cannot find the JDBC driver for Microsoft SQL server. You can download it below and add the jar to your WEB-INF/lib:

https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11774

Solution 5

Maybe you are missing any one of the following things : Both of the following things are necessary to remove the error :

  1. Adding mysql-connector.jar file to your WebContent / WEB-INF / lib folder.

  2. Adding mysql-connector.jar file in your classpath

Download mysql-connector.jar from https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.11

For solving first problem paste the above downloaded jar file into your project's WebContent / WEB-INF / lib folder.

For Solving second problem - right click on your project , go to properties then go to Java Build Path and then in Libraries section choose Add External JARs and select the above downloaded jar file.

Hope it helps.

Share:
22,699
Faizan Ul Haq
Author by

Faizan Ul Haq

Experienced Full Stack (Nodejs, Reactjs, Web3.js, Solidity) Developer, having a degree in Software Engineering with demonstrated work history.

Updated on February 10, 2020

Comments

  • Faizan Ul Haq
    Faizan Ul Haq about 4 years

    I have imported my library "mysql-connector-java-5.1.39" as answered by most people to exact same question , but I am still getting this error

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    

    here is the code of test class

    package database;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class Main {
    
        public static void main(String[] args) throws Exception {
            getConnection();
        }
    
        public static Connection getConnection() throws Exception {
            try{
                String driver="com.mysql.jdbc.Driver";
                String url="jdbc:mysql://localhost:3306/test";
                String username="root";
                String password="root";
                Class.forName(driver);
                Connection conn= DriverManager.getConnection(url,username,password);
                System.out.println("connected");
                return conn;
            }
            catch (Exception e){
                System.out.println(e);
            }
            return null;
        }
    }
    

    eclipse directory

    Using mac OS .

  • Naman
    Naman almost 8 years
    You need to add the jar for the lib to your project as an external library. Then it shall work, the if clause in my answer.
  • Faizan Ul Haq
    Faizan Ul Haq almost 8 years
    i have added connector zip from mysq site and added it through build path . it should be in class path or not ?
  • Faizan Ul Haq
    Faizan Ul Haq almost 8 years
    Sir ! I added connector zip file to build bath > add external jars.which i downloaded from mysql official site
  • deadpool
    deadpool almost 8 years
    I don't think that import statement is required. Class.forName uses reflection to get the class instance, and import is not required. Import is checked and resolved at the compile time.
  • MeisterAjit
    MeisterAjit almost 8 years
    Did you add zip file itself or its jar which is inside it ? You need to add jar not zip. It should be in your class path if you are running your program manually - Otherwise if you are using IDE then it will automatically from the lib directory where you have added it.
  • Faizan Ul Haq
    Faizan Ul Haq almost 8 years
    i was adding zip , now added jar file by placing it in class path and its done :)
  • MeisterAjit
    MeisterAjit almost 8 years
    Nice. Good. All the best with your rest of the project.
  • Arvindh Mani
    Arvindh Mani over 6 years
    The solution proposed by @MeisterAjit in the above comment is the only one that worked for me. I had added the ZIP instead of the JAR in Eclipse. An elementary bug that Eclipse needs to address.