【问题标题】:Unable to use MySQL Connector/J with Servlets using TomCat无法将 MySQL Connector/J 与使用 TomCat 的 Servlet 一起使用
【发布时间】:2014-08-17 08:34:36
【问题描述】:

我正在尝试在 Java 8 中使用 MySQL(在 Windows 7 x64 上使用 Eclipse Luna Release (4.4.0) 和 tomcat 8.0.9)。

我将mysql-connector-java-5.1.31-bin.jar 放入了我的WEB-INF/lib 目录。

将项目编译为普通的 Java 应用程序时,一切正常。但是,当我尝试使用与 servlet 相同的代码时,它会抛出

java.sql.SQLException:找不到合适的驱动程序 jdbc:mysql://localhost:3306/test

将 .jar 文件移动到 TomCat 的 /lib 目录也没有帮助 (虽然编译为普通应用程序仍然有效)。

我并没有真正改变任何东西,只是从 Java、TomCat 和 Eclipse 的旧组合升级而来。

显然,TomCat 没有正确加载库/驱动程序;任何想法为什么会这样?

【问题讨论】:

  • 那么您是如何创建连接的?在您的应用程序中手动使用 DriverManager,还是在 Tomcat 中定义数据源?
  • 我都试过了。使用 DriverManager 会引发上述异常。我还不能正确定义数据源,我得到的只是“java.sql.SQLException:无法为连接 URL 'null' 创建类 '' 的 JDBC 驱动程序”。
  • 确实很奇怪。我问是因为这决定了您将驱动程序放在哪里;如果数据源需要在 tomcat/lib 中,如果手动需要在 WEB-INF/lib 中(尽管 tomcat/lib 应该始终有效)。我认为此时您最好发布您拥有的数据源定义以及用于从中获取连接的代码。
  • 我的 xml 文件看起来像 this,然后我在我的代码中使用 context.bind("jdbc/TestDB", datasource);
  • 绑定()?你当然需要lookup()

标签: java mysql eclipse tomcat servlets


【解决方案1】:

当您升级版本时会发生这种情况。您必须下载最新版本的 java 和连接器,然后再尝试。

【讨论】:

  • 这正是我所说的“从旧版本升级”的意思——我用新版本替换了旧版本。
  • 这是由于版本不匹配而发生的。尝试通过重新安装与您的服务器和连接器兼容的版本来解决。我遇到过这样的问题并通过更改我的连接器版本来解决。
【解决方案2】:

编译不是问题;这是一个运行时问题。

Tomcat 文档很清楚:JDBC 驱动程序 JAR 属于 Tomcat 服务器/lib,而不是您的应用程序的 WEB-INF/lib。

该异常通常表示驱动类已加载,但连接 URL 字符串的语法不正确。

打开 MySQL 管理控制台并确保您可以使用您提供给应用程序的凭据访问该数据库。

【讨论】:

  • 正如我已经说过的,将 jar 文件移动到 Tomcat 的 /lib 目录并没有帮助。我完全能够使用使用的凭据连接到所述数据库。
  • 正如我已经说过的,我不认为类加载是你的问题。我认为您的问题是 URL 不正确。 “完美连接”? Java 似乎不同意你的观点。如果你不再坚持你对所有事情都是正确的,你会更快地解决这个问题。你显然不是。
  • 问题已经修复,请看开篇下的cmets。
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 2021-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多