【问题标题】:Error java.lang.ClassNotFoundException: com.mysql.jdbc.Driver even though I've installed the mysql conncetor [duplicate]错误 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 即使我已经安装了 mysql conncetor [重复]
【发布时间】:2015-12-26 05:03:00
【问题描述】:

当我尝试使用我的代码在 localhost:8080 登录时出现错误。有人可以帮帮我吗。我是 Web 应用程序开发的新手。我已连接到包含employee_idpassword 列的数据库(mysql),JAVA 应用程序将检查这些列以验证登录。但它返回一个错误。我在下面附上了我的所有文件以及错误,谢谢!我收到了错误

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

即使我已经安装了连接器。

Login.java (servlet)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Login extends HttpServlet {

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

    String employee_id = request.getParameter("employee_id");
    String password = request.getParameter("password");
    if(Validate.checkUser(employee_id, password)) { 
        RequestDispatcher rs = request.getRequestDispatcher("Welcome");
        rs.forward(request, response);
    }
    else
    {
       out.println("Employee ID or Password is incorrect. Please try again.");
       RequestDispatcher rs = request.getRequestDispatcher("index.html");
       rs.include(request, response);
    }
}  


    }

Welcome.java (servlet)

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Welcome extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse     response)
        throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    out.println("Welcome user");
  }  
}

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Page</title>
</head>
<body>
<form action="login" method="post">
<h3>
Employee Login
</h3>
<b>Employee ID:</b> <br>
<input type="text"name="employee_id" size="20"><br><br>
<b>Password:</b><br>
<input type="password" name="password" size="20"><br><br>
<input type="submit" value="Login"><br><br>
</form>
</body>
</html>

Validate.java(类)

import java.sql.*;
public class Validate
{
public static boolean checkUser(String employee_id, String password)
{
    boolean st = false;
    try { 
        Class.forName("com.mysql.jdbc.Driver"); 

        Connection con =      DriverManager.getConnection("jdbc:mysql://localhost:3306/payroll", "root", ""); 
        PreparedStatement ps = con.prepareStatement("select * from employee_login where employee_id =? and password = ?");
        ps.setString(1, employee_id);
        ps.setString(2, password);
        ResultSet rs =ps.executeQuery();
         st = rs.next();

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

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" >

<servlet>
    <servlet-name>login</servlet-name>
    <servlet-class>Login</servlet-class>
</servlet>
<servlet>
    <servlet-name>Welcome</servlet-name>
    <servlet-class>Welcome</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>login</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>Welcome</servlet-name>
    <url-pattern>/Welcome</url-pattern>
</servlet-mapping>

</web-app>

我在尝试登录时收到此错误:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at Validate.checkUser(Validate.java:8)
at Login.doPost(Login.java:15)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
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:505)
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:956)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745) 

【问题讨论】:

  • 你有没有在你的java构建路径中导入mysql的connector jar?
  • @RajnikantPatel 是的,我有,但仍然出现此错误。我右键单击我的项目并转到构建路径 -> 配置构建路径 -> 添加外部 JAR -> mysql-connector-java-5.1.38
  • 如果有,就不应该出现这样的错误。尝试再次清理和构建您的项目,然后从 Eclipse 或命令提示符重新启动您的 tomcat。
  • @RajnikantPatel 我不明白为什么我仍然收到此错误。我想我已经正确导入了它。我从mysql网站下载了驱动程序。我去配置构建路径->添加外部jar->并选择文件mysql-connector-java-5.1.38-bin.jar

标签: java sql database eclipse jdbc


【解决方案1】:

检查驱动程序包是否在正确的目录(WEB-INF/lib 文件夹下)或在您的构建路径中正确地指向具有正确版本的 jar。

【讨论】:

  • 它不在我的 WEB-INF/lib 文件夹下。这个文件夹完全是空的。有必要在那里添加吗?如果是这样,我该如何添加它?但是这个包在我项目的构建路径中。它在 Java 资源 -> 库中也可见
  • 没有。如果您已在构建路径中添加,则无需添加。但试试这种方式。它可能会解决问题。只需通过复制或转到项目工作区将此 jar 放在此目录下即可。
  • 是的!成功了,非常感谢!
  • 非常感谢所有其他也提出建议的人。非常感谢。
  • 欢迎 :)。希望你现在清楚了。
【解决方案2】:

Class.forName("com.mysql.jdbc.Driver").newInstance();

我认为您在那里缺少 newInstance。可以添加后再试吗?

【讨论】:

  • 它仍然给出那个错误:/ java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
【解决方案3】:

检查你的驱动包是否已经导入,然后重试

【讨论】:

  • 我右键单击我的项目文件夹构建路径 -> 配置构建路径 -> 添加外部 JAR -> mysql-connector-java-5.1.38
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-12
  • 2022-11-03
  • 2019-10-02
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-05-09
相关资源
最近更新 更多