【问题标题】:MySQL JDBC Connector not compilable?MySQL JDBC 连接器不可编译?
【发布时间】:2015-02-27 11:01:43
【问题描述】:

使用 MySQL ResultSetImpl 时出现以下错误: 在我参与的项目中,我们遇到了问题,ResultSet 在使用之前被关闭,因此引发异常。
为了分析这个错误,我想在ResultSet.close() 方法中添加一个Thread.dumpStack(),这样我就可以识别错误调用的来源。
为了能够修改代码,我从这个位置下载了 MySQL 包并解压:http://dev.mysql.com/downloads/connector/j/
我选择了“platform Independent”packacke 进行下载。
之后,我将“com”和“org”包复制到我的项目src文件夹中,并从lib文件夹中删除了mysql-jdbc.jar ,随后从 Eclipse 项目设置中的 java 构建路径中删除 jar。
在项目清理和重建后,我遇到了数百个编译错误,例如

Exception SQLException is not compatible with throws clause in Driver.getParentLogger() or 


The type FabricMySQLConnectionProxy must implement the inherited abstract method Connection.createSQLXML()`" or

 The type CallableStatement must implement the inherited abstract method CallableStatement.getNString(int)`".  

现在我在想 MySQL 的人应该能够打包一个可编译的 jar 文件,所以我很感谢我忽略的任何东西,以及任何关于我应该做些什么来让这个东西工作的意见。

【问题讨论】:

  • 继续使用您的二进制 jar 可能会更容易,将您下载的源代码附加到它(在依赖项中找到 jar,右键单击附加源)。然后你就可以设置断点了
  • 您好,是的,这是一种方法,但有点不切实际,因为在出​​现错误之前会多次调用此方法。我宁愿搜索日志而不是在 Eclipse 中无休止地按“F8”;)但无论如何感谢您的想法!

标签: java mysql eclipse jdbc


【解决方案1】:

缺少接口方法,因为您的 JDK 版本较高。
您正在使用 jdk 1.6(或更高版本)(例如 createSQLXML 自 1.6 以来是 Connection 的成员)。
您下载的源代码实现了 Java 5(或更低)版本的 Connection(and ResultSet,...) 接口。
如果您在运行 Java 6 或更高版本的应用程序中使用 Java 5 编译的 jar,那没问题。但是如果你想用更高的jdk编译源码,你必须实现从1.5开始添加的新接口方法。
您可以通过选择 eclipses add unimplemented method 建议,在每个类中一键创建缺少的方法。
您不需要为新方法编写内容,因为它们未被使用。

【讨论】:

  • 哇,这解释了很多,非常有帮助!会试试的,非常感谢! :)
猜你喜欢
  • 2016-04-28
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多