Java Connection.setClientInfo 结果 AbstractMethodError

Java Connection.setClientInfo results AbstractMethodError

将客户端信息 (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();
    }
  }
}

setClientInfo 是 JDBC 4.0 方法,因此您需要使用 JDBC 4.0 驱动程序。

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