为什么会出现java.lang.AbstractMethodError错误?

为什么会出现java.lang.AbstractMethodError错误?,java,thrift,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

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)

简单的答案是:一些代码试图调用一个声明为
抽象的方法。抽象方法没有主体,无法执行。由于您提供的信息太少,我无法详细说明这是如何发生的,因为编译器通常会从

当应用程序尝试调用抽象方法时引发。正常地 此错误被编译器捕获;此错误只能在运行时发生 如果某个类的定义自 当前执行的方法是上次编译的


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

如果您在实现的方法中遇到此错误,请确保已按照中所述正确添加依赖项

正如达米安所引述:

通常,编译器会捕获此错误;此错误仅适用于 如果[…]在运行时发生


我有同样的错误,编译器没有捕捉到,但在运行时。为了解决这个问题,我只重新编译了一次,没有对代码进行任何修改。

这是上述情况的一种特例

我犯了这个错误,因为我使用的是
spring boot starter父级
(例如
2.1.0.RELEASE
使用的是spring版本:
5.1.2.RELEASE
),但我也包含了
BOM
,该BOM也定义了一些spring依赖项,但在较旧的版本中(例如
5.0.9.RELEASE

因此,要做的一件事是,如果您使用的是相同的版本,请检查您的
依赖关系树(在Eclipse中,例如,您可以使用依赖关系层次结构)


因此,一种解决方案可能是升级
BOM
中的spring依赖项,另一种可能是排除它们(但取决于数量,这可能很难看)。

如果下载任何项目zip文件,在解压缩并导入Android Studio后,由于发生此错误,您无法运行项目

我通过删除我的android studio,然后下载并安装新版本,解决了这个问题


我真心希望它能有所帮助。

如果您在使用Proguard的缩小版上遇到此错误,请检查该类是否为POJO类,如果是,请使用以下规则将其从Proguard中排除:


-保持你的类.application.package.pojo.*{*;}

给我们一些上下文,你想做什么?可能是一些版本问题!您调用的方法或其他代码调用的方法现在已转换为抽象方法。我构建了thrift编译器并生成了thrift文件。并使用mvn构建我的项目,该项目还下载了0.9.0版本的apache thrift jars。是的,方法被定义为抽象的,但我通过eclipse跟踪,我看到方法是在子类中实现的,但这意味着您必须调用特定的子类实现。您仍然无法调用方法本身。我再次检查,Apache thrift生成的代码正在调用特定于子对象的实现。请仔细检查。如果您仍然确定,请打开一个包含完整、可复制测试用例的JIRA票证。很好,您让我在“旧版本的接口”中遇到了这个异常。这正是运行时组件之间接口不兼容的原因。可以参考异常的javadoc了解更多详细信息。感谢您的“检查依赖关系树”