异常:java lang AbstractMethodError

异常:java lang AbstractMethodError通常在尝试调用抽象方法时抛出此java.lang.AbstractMethodError。通常,此错误是在编译时本身识别的,如果在运行时抛出此错误,则该类必须不兼容(与先前存在的类不兼容))更改。因此,它是IncompatibleClassChangeError的子类。我们知道不能调用抽象方法,如果尝试这样做,则会收到编译时错误,因此您可能会认为在运行时如何抛出此错误?…

大家好,又见面了,我是你们的朋友全栈君。

通常在尝试调用抽象方法时抛出此
java.lang.AbstractMethodError。通常,此错误是在编译时本身识别的,如果在运行时抛出此错误,则该类必须不兼容(与先前存在的类不兼容) )更改。因此,它是IncompatibleClassChange Error的子类。
我们知道不能调用抽象方法,如果尝试这样做,则会收到编译时错误,因此您可能会认为
在运行时如何抛出此错误?

原因是
二进制不兼容
这是什么意思?
每当修改一个类时,引用该(修改的)类的其他类将不会意识到其中所做的更改。因此,所有类都必须作为一个整体进行编译。 如果不是,那么您可能会遇到不兼容的类更改错误的子类之一。



此错误表明您调用的方法现在已转换为抽象方法”。

请参阅以下示例,以了解有关此错误的信息
class B
{
public void display()
{
System.out.println("I am inside B");
}
}


import java.util.*;
public class A extends B
{
public static void main(String args[])
{
A a=new A();
a.display();
}
}

输出:

C:\blog>javac A.java

C:\blog>java A
I am inside B

现在,我将把display()方法转换为抽象方法,并单独进行编译。

abstract class B
{
public abstract void display();
}

输出:

C:\blog>javac A.java

C:\blog>java A
I am inside B

C:\blog>javac B.java

C:\blog>java A
Exception in thread "main" java.lang.AbstractMethodError: B.display()V
        at A.display(A.java:3)
        at A.main(A.java:8)
如您所见,在运行时引发此异常的原因是我没有将这些类作为一个整体进行编译。因此,每当对现有类进行更改时,请确保已对整个类进行了编译。
因此,将方法转换为分布式类中的抽象方法不是一个好习惯。当您在应用程序中使用第三方库时,通常会发生此类错误。
如果在编译时未显示此错误,即使您将其作为一个整体进行编译,则必须检查库设置和类路径设置。
因为编译器通常在当前目录中也在系统库(如引导程序库和扩展库)中搜索类,但是JVM在指定的类路径中搜索类。
如果您不小心将较旧的版本放置在系统库中,而将较新的版本放置在类路径中,则即使将其编译为整个软件包,也不会收到有关此错误的通知。
因此,请确保已删除与旧软件包有关的设置。
参考:来自
Java错误和异常博客的
JCG合作伙伴 Ganesh Bhuddhan提供的
java.lang.AbstractMethodError

翻译自: https://www.javacodegeeks.com/2012/08/exception-java-lang-abstractmethoderror.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/137037.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • TensorFlow中学习率[通俗易懂]

    TensorFlow中学习率[通俗易懂]学习率学习率属于超参数。学习率决定梯度下降速度的快慢,学习率越大,速度越快;学习率越小,速度越慢。如果学习率过大,很可能会越过最优值;反而如果学习率过小,优化的效率可能过低,长时间算法无法收敛。所以学习率对于算法性能的表现至关重要。指数衰减学习率指数衰减学习率是在学习率的基础上增加了动态变化的机制,会随着梯度下降变化而动态变化tf.train.expo…

    2022年6月1日
    47
  • 4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)

    4.4.2分类模型评判指标(一) – 混淆矩阵(Confusion Matrix)简介混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法。一句话解释版本:混淆矩阵就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。这个表就是混淆矩阵。数据分析与挖掘体系位置混淆矩阵是评判模型结果的指标,属于模型评估的一部分。此外,混淆矩阵多用于判断分类器(Classifier)的优劣,适用于…

    2022年5月14日
    51
  • Taiko taiko

    Taiko taikoTaikotaikoDescription拆拆超级喜欢太鼓达人(赛后大家可自行百度规则),玩久了也对积分规则产生了兴趣,理论上连击数越多,分数增加的越快,而且还配合着击打准确度有相应的计算规则,拆拆觉得这些规则太复杂了,于是把规则自行简化了下:对于一段击打序列,我们假设Y为打中,N为未打中(没有良可之分了)我们视连续的n次击中为n连击 相应的分数为1+2+3

    2022年10月22日
    0
  • discuz二次开发笔记

    discuz二次开发笔记禁止游客访问后,QQ互联登录失效在connect.php添加一行define(‘CURSCRIPT’,’member’);(自己翻源码看的,不保证不会造成其它问题,请自行测试)目录介绍代码 upload/(上线只要copy这个文件夹就可以了)模板文件 upload/template/ (要修改模板样式都在这里,改完要管理员去“工具”->”更新缓存”

    2022年5月19日
    41
  • 免费 UML 工具

    免费 UML 工具选取了四款UML工具:astah经常看到网上的黄色背景就是这个软件画的,最后一个免费的社区版本是:astahcommunity7.2安装包大小50M以下三个均为免费版本:SoftwareIdeasModeler可以画序列图,安装包很小,只有十几兆,而且提供便携版下载Modelio这是一个大型的软件,安装包300+MBModelio是由位于法国巴黎的Modeliosoft开发的开源UML工具。它支持UML2和BPMN标准。BOUML看起来…

    2022年7月12日
    12
  • python lmdb_python compile函数

    python lmdb_python compile函数使用Python合并lmdb文件

    2022年9月29日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号