【问题标题】:Servlet Throws Exception at Runtime in EclipseServlet 在 Eclipse 的运行时抛出异常
【发布时间】:2019-08-20 06:27:38
【问题描述】:

每当我在 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”或“invalid name and password”

【问题讨论】:

  • 带有 JDBC 驱动程序的 JAR 文件必须在应用程序的 WEB-INF/lib 文件夹中,或者在 Tomcat 的 lib 文件夹中。因此,将 JDBC 驱动程序 JAR 文件放到 web-application Eclipse 项目的 WebContent/WEB-INF/lib 文件夹中,然后(重新)部署您的 web 应用程序。

标签: java mysql eclipse servlets


【解决方案1】:

卸载并重新安装 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 文件运行时 类路径。但无论如何建议更改代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 2015-06-03
    • 2010-09-10
    • 2015-03-28
    相关资源
    最近更新 更多