Servlet在运行时在Eclipse中引发异常

时间:2019-03-29 10:24:28

标签: java mysql eclipse servlets

每当我在Eclipse中运行servlet时,它都会显示:

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

我已经正确连接了jar文件,并在构建路径配置中设置了路径。我还能做些什么吗?

要卸载并重新安装MySQL吗?

{
    [...]
    Class.forName("com.mysql.jdbc.Driver");
    Connection con=DriverManager.getConnection
        ("jdbc:mysql://localhost:3306/example","root","root");
    String qr="select * from details where name=? and pwd=?";
    PreparedStatement ps=con.prepareStatement(qr);
    ps.setString(1, name);
    ps.setString(2, pwd);

    ResultSet rs=ps.executeQuery();
    if(rs.next())
    {
        out.println("home");
    }
    else
    {
        out.println("Invalid name and password");
    }
    con.close();
} catch(Exception e) {
    out.println(e);
}

我希望输出“ home”或“无效的名称和密码”

1 个答案:

答案 0 :(得分:0)

  

要卸载并重新安装MySQL吗?

不。问题出在您的Java客户端代码中,而不是MySQL安装中。

您不再应该这样做:

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

正确的方法是致电:

 Connection con = DriverManager.getConnection(url, user, password);

具有正确的JDBC URL,用户名和密码。

这是对所有符合JDBC 4.0+的驱动程序使用DriverManager的正确方法;参见javadocDriverManager类的初始化将使用服务提供者机制来查找并加载实际的驱动程序类。

您的代码不起作用的最可能原因是Driver类的完全合格的类名在Connector / J 8.0中已更改。基本上,您的代码要求JVM加载不再存在的类。

如果这不能解释/解决您的问题(即您使用的是Connector / J 5.1或更早版本),则最可能的解释是,上述代码的中没有驱动程序JAR文件运行时类路径。但是无论如何建议更改代码。