Java 异常 java.lang.AbstractMethodError

问题描述 投票:0回答:4

如何解决这个异常:

Exception in thread "main" java.lang.AbstractMethodError: com.mysql.jdbc.Connection.isValid(I)Z
    at org.apache.commons.dbcp2.DelegatingConnection.isValid(DelegatingConnection.java:914)
...

我读到这个错误与库/ jdk 有关,但我找不到解决它的好方法。我需要你的帮助。谢谢!

java jdbc
4个回答
3
投票

这意味着你的mysql jdbc驱动程序没有实现jre 6中添加的jdbc方法,例如isValid


2
投票

如果您提供验证查询,则可以避免升级驱动程序。


0
投票

我将 JDBC 驱动程序 jar 文件升级到 mysql-connector-java-6.0.2 并解决了这个问题。


0
投票

结合多个答案并扩展信息,以便所有信息都集中在一处......

正如 @BrettOkken 提到的,JDK 1.6 在 Connection 上添加了

isValid
方法,因此最好的选择是找到更新版本的驱动程序。

扩展@mhvelplund的答案......

如果您说服 Tomcat 的 dbcp2 不调用

isValid
方法,则可以避免升级 JDBC 驱动程序。您可以通过在
validationQuery
文件(放入 Tomcat 的
validationQueryTimeout
中)的
maxConnLifetimeMillis
定义中指定
Resource
(也可能是
context.xml
/conf/Catalina/localhost/{myappname}.xml
)来完成此操作。

<Resource name="jdbc/ajx"
    auth="Container" type="javax.sql.DataSource"
    maxTotal="25" maxIdle="30" maxWaitMillis="10000"
    maxConnLifetimeMillis="300000"
    validationQuery="SELECT CURRENT_TIME()"
    validationQueryTimeout="1"
    driverClassName="{...}"
    url="jdbc:{...}"/>
© www.soinside.com 2019 - 2024. All rights reserved.