【问题标题】:Can't load the class: com.mysql.jdbc.Driver无法加载类:com.mysql.jdbc.Driver
【发布时间】:2014-08-07 00:33:01
【问题描述】:

我已阅读所有先前的答案并遵循(在 Eclipse 上)构建路径 -> 配置构建路径以添加外部 JAR:mysql-connector-java-5.1.20.jar,但是,它仍然无法加载类.

我的 servlet 代码:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  PrintWriter out = response.getWriter();
  try {
    Class.forName("com.mysql.jdbc.Driver");
    out.println("<br>Class loaded: com.mysql.jdbc.Driver<br>");
  } catch (ClassNotFoundException e) {
    out.println("<br>Can't load class: com.mysql.jdbc.Driver<br>");
    return;
  }
}

我的 Eclipse 版本:Luna 版本 (4.4.0) 纽约 OSX:10.9.4

有人知道吗?

【问题讨论】:

  • 您能更具体地描述您的问题吗?将外部 *.jar 添加到 Eclipse 项目的基本方法是右键单击项目,例如在Package Explorer 视图中,选择“属性 -> Java 构建路径 -> 库 -> 添加外部 JAR...”。之后,添加的 *.jar 中的所有类都应添加到项目的默认类路径中。

标签: java mysql eclipse jdbc


【解决方案1】:

由于上面的方法是protected void doGet(HttpServletRequest request, HttpServletResponse response)我想我们可以假设这是一个Web应用程序。

在将应用程序部署到 Tomcat (???) 时,请确保该 jar 包含在 tomcat/lib 或已部署的 WEB-INF/lib 目录中

编辑: 根据@duffymo Tomcat 7.x 要求 JAR 位于 Tomcat /lib 目录中,否则将找不到它。

【讨论】:

  • Tomcat 7.x 要求 JAR 位于 Tomcat /lib 目录中,否则将找不到它。
  • @duffymo 谢谢,我想可能是这样。
【解决方案2】:

您只需在 Eclipse 中为构建路径配置它即可进行编译。 在Tomcat等Servlet Container中运行时,需要放入WEB-INF/lib。

将 jar 文件放在 Tomcat lib 文件夹下也可以。

【讨论】:

  • 参见 Tomcat 7.x:“Apache Tomcat 包含的 JRE 内存泄漏预防侦听器通过在 Tomcat 启动期间触发驱动程序扫描来解决此问题。默认情况下启用。这意味着只有库可见将扫描 $CATALINA_BASE/lib 中的侦听器以查找数据库驱动程序。如果您正在考虑禁用此功能,请注意扫描将由第一个使用 JDBC 的 Web 应用程序触发,导致该 Web 应用程序失败应用程序被重新加载并用于依赖此功能的其他 Web 应用程序。”
  • 我也认为将 DB Driver jar 文件放在容器下不是一个好主意。它是应用程序的一部分并保留在应用程序中。
  • Tomcat 的作者不同意你的观点。应用服务器通常管理连接池,因此驱动程序需要对其类加载器进行访问。跨应用程序都是如此。
  • 本地运行时,我会把驱动类放到我的App中,但是当使用像WebSphere、WebLogic这样的通常有这些驱动jar文件的App Server时,我会让App server来管理连接池。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2015-01-22
  • 2016-08-18
  • 2012-04-23
  • 2016-01-12
  • 1970-01-01
  • 2018-11-13
相关资源
最近更新 更多