为什么我收到java.lang.AbstractMethodError错误?

Avi*_*ash 27 java thrift

ABstractMethodError的可能原因是什么?

线程"pool-1-thread-1"中的异常java.lang.AbstractMethodError:

org.apache.thrift.ProcessFunction.isOneway()Z
    at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:51)
    at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
    at com.gemfire.gemstone.thrift.hbase.ThreadPoolServer$ClientConnnection.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)

Evg*_*eev 50

它通常意味着您使用的旧版本的接口实现缺少新的接口方法.例如,java.sql.Connection接口在1.7中获得了一个新的getSchema方法.如果您有1.6 JDBC驱动程序并调用Connection.getSchema,您将获得AbstractMethodError.

  • 很好,你让我在"旧版界面" (3认同)

dev*_*obf 20

简单的答案是:一些代码试图调用声明的方法abstract.抽象方法没有主体,无法执行.由于您提供的信息很少,因此我无法详细说明如何发生这种情况,因为编译器通常会捕获此问题 - 如此处所述,这意味着该类必须在运行时更改.


Dam*_*ash 7

来自AbstractMethodError 的文档

当应用程序尝试调用抽象方法时抛出。通常,这个错误是由编译器捕获的;如果自上次编译当前执行的方法以来某个类的定义发生了不兼容的更改,则此错误只会在运行时发生。