简体   繁体   中英

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

I am trying simple login authentication using servlets and jdbc connection to MySQL database. After executing it on tomcat server I am getting following error:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.leader.prog.Validate.checkUser(Validate.java:13)
at com.leader.servlet.Login1.doPost(Login1.java:42)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2466)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2455)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

I am sharing the content of all files:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
 <servlet-name>login</servlet-name>
    <servlet-class>com.leader.servlet.Login1</servlet-class>
  </servlet>
   <servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
  </servlet-mapping>


   <servlet>
<servlet-name>welcome</servlet-name>
<servlet-class>com.leader.servlet.Welcome</servlet-class>
   </servlet>
  <servlet-mapping>
<servlet-name>welcome</servlet-name>
<url-pattern>/welcome</url-pattern>
  </servlet-mapping>


  <welcome-file-list>
<welcome-file>Home.html</welcome-file>
  </welcome-file-list>
</web-app>

Login1.java

package com.leader.servlet;


import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.leader.*;
import com.leader.prog.Validate;

@WebServlet("/Login1")
public class Login1 extends HttpServlet {
/**
 * @see HttpServlet#HttpServlet()
 */
public Login1() {
    super();
    // TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}


      protected void doPost(HttpServletRequest request,
                        HttpServletResponse response)
                throws ServletException, IOException
      {
          response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();

            String user = request.getParameter("userName");
            String pass = request.getParameter("password");

            if(Validate.checkUser(user.toString(),pass.toString()))
            {
                RequestDispatcher rs = request.getRequestDispatcher("Welcome");
                rs.forward(request, response);
            }
            else
            {
               out.println("Username or Password incorrect");
               RequestDispatcher rs = request.getRequestDispatcher("Home.html");
               rs.include(request, response);
            }

        }  
      }

validate.java

package com.leader.prog;
import java.sql.*;

public class Validate
 {

 public static boolean checkUser(String user,String pass) 
 {
  boolean st =false;
  try{

 //loading driver 
     Class.forName("com.mysql.jdbc.Driver");

 //creating connection with the database 
     Connection con=DriverManager.getConnection
                    ("jdbc:mysql://localhost:3306/person","root","password");
     PreparedStatement ps =con.prepareStatement
                         ("select * from person where pid=? and password=?");
     ps.setString(1, user);
     ps.setString(2, pass);
     ResultSet rs =ps.executeQuery();
     st = rs.next();

  }catch(Exception e)
  {
      e.printStackTrace();
  }
     return st;                 
 }   
 }

Please help me to get out of this issue.

Check the availability of mysql driver is in classpath. If you are using IDE(eclipse) try to add it to build path.

You should add Mysql connector library you your project buildpath

You can download library from http://dev.mysql.com/downloads/connector/j/5.0.html

or

http://www.java2s.com/Code/Jar/c/Downloadcommysqljdbc515jar.htm

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM