使用dbcp时发生abstractmethoderror异常
使用dbcp时发生abstractmethoderror异常,,错误描述:
exception in thread main java.lang.abstractmethoderror: com.mysql.jdbc.connection.isvalid(i)z
at org.apache.commons.dbcp2.delegatingconnection.isvalid(delegatingconnection.java:914)
at org.apache.commons.dbcp2.poolableconnection.validate(poolableconnection.java:283)
at org.apache.commons.dbcp2.poolableconnectionfactory.validateconnection(poolableconnectionfactory.java:357)
at org.apache.commons.dbcp2.basicdatasource.validateconnectionfactory(basicdatasource.java:2304)
at org.apache.commons.dbcp2.basicdatasource.createpoolableconnectionfactory(basicdatasource.java:2287)
at org.apache.commons.dbcp2.basicdatasource.createdatasource(basicdatasource.java:2038)
at org.apache.commons.dbcp2.basicdatasource.getconnection(basicdatasource.java:1533)
at dbcp.main(dbcp.java:23)
解决方案:
mysql-connector 版本为 5.0.4 ,那么对应的 dbcp 和 pool 版本应该为 1.4 和 1.6 。
5.0.4 不应该使用 2.0 及以上版本的 dbcp 和 pool。因为 在 dbcp 中 org.apache.commons.dbcp2.delegatingconnection 有如下代码:
try {
return _conn.isvalid(timeout);
}
catch (sqlexception e) {
handleexception(e);
return false;
}
上述代码中 isvaild 在 com.mysql.jdbc.connection (5.0.4 ) 中并未实现上述方法,因此将会抛出抽象方法错误。
如果需要使用 dbcp 2.0 ,那么 mysql-connector 必须使用 5.1.3 版本。
本文永久更新链接地址: