【问题标题】:Maven compilation and run time error java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z on Tomcat 8 ServerMaven 编译和运行时错误 java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.isValid(I)Z on Tomcat 8 Server
【发布时间】:2015-12-08 14:52:34
【问题描述】:

我一直在将一个大型 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>

但我仍然看到此错误。我可以做些什么来消除这个错误?

【问题讨论】:

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

标签: java maven tomcat jdbc tomcat8


【解决方案1】:

这个错误确实消失了,虽然我不知道为什么。 pom 条目仍然相同,并且仍在 Tomcat 8 上运行。我们确实找到了一个 hacky 临时修复:

<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>

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多