为什么会出现java.lang.AbstractMethodError错误?
ABstractMethodError的可能原因是什么 线程“pool-1-thread-1”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
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了解更多详细信息。感谢您的“检查依赖关系树”