论坛风格切换
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 1634阅读
  • 0回复

[转载]使用DBCP时发生AbstractMethodError异常 [复制链接]

上一主题 下一主题
离线影子枫
 

发帖
107750
今日发帖
最后登录
2024-05-18
只看楼主 倒序阅读 使用道具 楼主  发表于: 2015-04-19 17:01:07
使用DBCP时发生AbstractMethodError异常
[日期:2015-04-19] 来源:Linux社区  作者:wanda1416 [字体:大 中 小]  
使用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 版本。


本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:http://www.linuxidc.com/Linux/2015-04/116433.htm