java - Servlet 在 Eclipse 中运行时抛出异常

标签 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”或“无效的名称和密码”

最佳答案

Uninstall and re-install 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 文件运行时类路径。但无论如何,更改代码是可取的。

关于java - Servlet 在 Eclipse 中运行时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55415304/

相关文章:

java - Eclipse RCP 项目的更好工作区位置

java - 是否可以在 myeclipse 中安装 apache derby eclipse 插件?

c# - 使用和持久化枚举的最佳实践

java将字符串传递给文件编写器会使创建的文件变得困惑

mysql - 在MySql中插入100000+条记录

c# - 使用多对多关系添加对象 Entity Framework

java - 如何在 Eclipse 中的 git 分支之间进行纯文本比较(使用 EGit)

java - 有什么方法可以排除 pom.xml 中额外的 AWS Maven 依赖项吗?

mysql - 从 MySQL 验证用户名和密码

java - 如何在 Windows 上开发 Apple Java Extensions?