Maven编译和运行时错误java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.isValid(I)Z在Tomcat8服务器上

Maven编译和运行时错误java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.isValid(I)Z在Tomcat8服务器上,java,maven,tomcat,jdbc,tomcat8,Java,Maven,Tomcat,Jdbc,Tomcat8,我一直在将一个大型Java Web应用程序转换为一个maven项目,但在一些源自tomcat dbcp jar的类中遇到了错误。我从任何需要使用BasicDataSource对象的类中获得以下错误消息: javax.servlet.ServletException: java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z java.lang.AbstractMethodError: oracle.jd

我一直在将一个大型Java Web应用程序转换为一个maven项目,但在一些源自tomcat dbcp jar的类中遇到了错误。我从任何需要使用BasicDataSource对象的类中获得以下错误消息:

javax.servlet.ServletException: java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z
现在我知道服务器上有这个jar(因为在Tomcat8安装中它是默认的)。因此,在maven中,我声明了这种依赖关系:

<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-dbcp</artifactId>
    <version>8.0.26</version>
    <scope>provided</scope>
</dependency>

org.apache.tomcat
TomcatDBCP
8.0.26
假如

但我仍然看到这个错误。如何消除此错误?

此错误确实消失了,但我不知道原因。pom条目仍然相同,并且仍然在Tomcat8上运行。我们确实找到了一个骇人的临时解决方案:

<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc7</artifactId>
    <version>12.1.0.1</version>
    <scope>system</scope>
    <systemPath>${basedir}/lib/ojdbc7-12.1.0.1.jar</systemPath>
</dependency>

com.oracle
ojdbc7
12.1.0.1
系统
${basedir}/lib/ojdbc7-12.1.0.1.jar

但我们在某个时候恢复了,它工作正常。

您使用的是哪个版本的Oracle驱动程序?您可能想尝试升级到更新的版本。与我的Tomcat8安装中的标准版本相同。据我所知,这是一场驾驶冲突。但是,如果我的war中没有包含驱动程序,它会说它找不到类。这并不能真正缩小范围。
isValid(int)
方法是在JDBC4(Java6)中添加的,从外观上看,您只是在为较旧的Java版本(ojdbc5、ojdbc14等)使用驱动程序;或者是一个没有完全实现JDBC4的旧版本。很抱歉,我使用的是ojdbc7,与讨论中的jar混淆了。我在想tomcat dbcp。