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)
答案 0 :(得分:47)
这通常意味着您使用的旧版本的接口实现缺少新的接口方法。例如,java.sql.Connection接口在1.7中获得了一个新的getSchema方法。如果您有1.6 JDBC驱动程序并调用Connection.getSchema,您将获得AbstractMethodError。
答案 1 :(得分:19)
简单的答案是这样的:一些代码试图调用一个声明为abstract
的方法。抽象方法没有主体,无法执行。由于您提供的信息很少,因此我无法详细说明如何实现这一点,因为编译器通常会遇到此问题 - as described here, this means the class must have changed at runtime.
答案 2 :(得分:4)
当应用程序尝试调用抽象方法时抛出。一般, 编译器捕获此错误;此错误只能在运行时发生 时间,如果某个类的定义自那以后不一致改变了 最后编译了当前正在执行的方法。
答案 3 :(得分:0)
如果您在实现的方法上遇到此错误,请确保已按照this thread中的说明正确添加了依赖项。
答案 4 :(得分:0)
如达米安所说:
通常,编译器会捕获此错误;此错误只能 如果[...]
我遇到了与编译器未捕获但在运行时相同的错误。为了解决这个问题,我只再次编译而未对代码进行任何修改。
答案 5 :(得分:0)
上述answer的一种特殊情况。
我有此错误,因为我使用的是spring-boot-starter-parent
(例如2.1.0.RELEASE
使用的是春季版本:5.1.2.RELEASE
),但我也包括了{{1 }},它也定义了一些spring依赖关系,但版本较旧(例如BOM
)。
因此,要做的一件事就是检查您的5.0.9.RELEASE
(在Eclipse中,例如,您可以使用依赖关系层次结构)。
一种解决方案可能是升级dependency tree
中的spring依赖项,另一种可能是排除它们(但取决于数量,这可能很丑陋)。
答案 6 :(得分:0)
如果您下载了任何项目zip文件,则将其解压缩并导入Android Studio后,您将无法运行该项目,因为发生了此错误。
我通过删除android studio摆脱了问题,然后下载并安装了新版本。
我真的希望它能对您有所帮助。
答案 7 :(得分:0)
如果您在使用 Proguard 的缩小构建中遇到此错误,请检查该类是否为 POJO 类,如果是,则使用以下规则将其从 Proguard 中排除:
-keep class your.application.package.pojo.** {*;}
答案 8 :(得分:0)
当我将 eclipse 项目导入到 intellij ide 时,我遇到了同样的错误。我尝试在没有 .iml 文件的情况下导入它,然后我的问题就解决了