【问题标题】:Uncaught Throwable java.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf未捕获的可抛出 java.lang.AbstractMethodError:org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf
【发布时间】:2020-11-16 09:32:25
【问题描述】:

尝试使用数据源池连接在 Microsoft SQL 服务器上调用 con.createArrayOf 方法时出现以下错误

未捕获的可投掷物 java.lang.AbstractMethodError: org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;

任何线索都是可观的。

【问题讨论】:

  • 您使用的是哪个版本的 Apache DBCP?该错误表明您使用的是支持 JDBC 3 或更低版本(即 Apache DBCP 1.3 或更早版本)的版本,因为您尝试调用的方法是在 JDBC 4 (Java 6) 中引入的。

标签: java sql sql-server jdbc datasource


【解决方案1】:

基本上,您不能在当前库中使用 createArrayOf 方法。您必须使用不同的数据库驱动程序库。

您可以使用类似https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server 的内容,因为您使用的是 SQL Server。

【讨论】:

  • Apache DBCP 不是驱动库,而是连接池库。
【解决方案2】:

错误提示您使用的是 Apache DBCP 1.3 或更早版本,因为您尝试调用的方法是在 JDBC 4 (Java 6) 中引入的,而 Apache DBCP 1.3 支持 JDBC 3 (Java 1.4/5)。

鉴于https://commons.apache.org/proper/commons-dbcp/ 的概述,您至少需要使用 Apache DBCP 1.4 或更新版本(最新版本为 2.7.0,适用于 Java 8 及更高版本)。

请注意,虽然升级对您没有多大帮助,因为createArrayOf 的 Microsoft SQL Server JDBC 驱动程序实现将抛出 SQLFeatureNotSupportedException,因为 SQL Server 不支持数组。

【讨论】:

    猜你喜欢
    • 2020-06-26
    • 2015-10-05
    • 1970-01-01
    • 2023-02-06
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多