【问题标题】:Java Connection.setClientInfo results AbstractMethodErrorJava Connection.setClientInfo 结果 AbstractMethodError
【发布时间】:2017-02-25 11:38:04
【问题描述】:

将客户端信息 (ClientHostname) 设置为 java.sql.Connection 的简单 Java 代码。但它给出了java.lang.AbstractMethodError: com.ibm.db2.jcc.t4.b.setClientInfo(Ljava/lang/String;Ljava/lang/String;)V 错误。有人知道出了什么问题吗?我正在使用 java 8。

我找不到导致此问题的路线原因。投射到 DB2Connection 也没有帮助。

public class Main {
  public static void main(String[] args) {
    try {
      Class.forName("com.ibm.db2.jcc.DB2Driver");
      Connection con = DriverManager.getConnection("jdbc:db2://host:port/db", "user", "pwd");
      con.setClientInfo("ClientHostname", "localhost"); // => error here
      System.out.println("SUCCEED  setting ClientHostname");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
  }
}

【问题讨论】:

  • 该方法从 Java 6 开始就存在,但是您的 JDBC 驱动程序显然是在那之前制作的,并且还没有该方法。要么它已经过时,你应该切换到更新的版本,或者 IBM 很长时间没有提供最新的驱动程序,我不知道。

标签: java jdbc db2 db2-luw


【解决方案1】:

setClientInfo 是 JDBC 4.0 方法,所以需要使用 JDBC 4.0 驱动。

IBM 在 db2jcc.jar 中提供 JDBC 3.0 驱动程序,在 db2jcc4.jar 中提供 JDBC 4.0 驱动程序。因此,请确保您的 CLASSPATH 中有 db2jcc4.jar 而不是 db2jcc.jar

【讨论】:

  • 哦..让我检查一下。
  • 将驱动程序升级到版本 4 后未出现错误。
猜你喜欢
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多