异常: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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 多边形内有2枚钉子的图形_当多边形内没有钉子

    多边形内有2枚钉子的图形_当多边形内没有钉子Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s) : 24 Accepted Submission(s) : 7Problem DescriptionStatement of the Problem Several drawing applications allow us to draw polygons and almost all of the

    2022年8月9日
    3
  • centos7部署k8s_怎么在自己电脑上搭建网站

    centos7部署k8s_怎么在自己电脑上搭建网站学习K8S时,常常需要自己搭建环境,本人将centOS-7上搭建K8S的过程进行做如下的记录,以方便自己后续环境的搭建和指导其他人搭建环境作为参考资料,本章节主要介绍如何搭建kubernetes的集群环境集群环境搭建集群类型kubernetes集群大体上分为两类:一主多从和多主多从。一主多从:一台Master节点和多台Node节点,搭建简单,但是有单机故障风险,适合用于测试环境多主多从:多台Master节点和多台Node节点,搭建麻烦,安全性高,适合用于生产环境说明:为了测试简单,本次搭建

    2022年8月12日
    11
  • 高并发解决方案之一 ——负载均衡

    高并发解决方案之一 ——负载均衡1.什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下…

    2022年5月31日
    41
  • python进阶(3)json文件与python字典的转化[通俗易懂]

    python进阶(3)json文件与python字典的转化[通俗易懂]序列化与反序列化按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化;反之,从文件的字节恢复到内存,就是反序列化;pytho

    2022年7月31日
    4
  • oracle创建表空间自动增长

    oracle创建表空间自动增长createtablespaceZB_TABLESPACEdatafile’ZB_TABLESPACE.dbf’size3200Mautoextendonnext5Mmaxsizeunlimited;https://www.cnblogs.com/liushuaibiao/p/10783986.html

    2022年7月27日
    15
  • mysql 日志的启动与查看:有利于开发者研究网站一个页面执行时的sql语句变化…

    mysql 日志的启动与查看:有利于开发者研究网站一个页面执行时的sql语句变化…

    2021年8月20日
    67

发表回复

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

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