异常: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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • HTTP.SYS远程代码执行漏洞(蓝屏洞)「建议收藏」

    HTTP.SYS远程代码执行漏洞(蓝屏洞)「建议收藏」1.简介远程执行代码漏洞存在于HTTP协议堆栈(HTTP.sys)中,当HTTP.sys未正确分析经特殊设计的HTTP请求时会导致此漏洞。成功利用此漏洞的攻击者可以在系统帐户的上下文中执行任意代码。不过我看了一下这个HTTP.SYS还发生过其他的远程代码执行漏洞,我还是表明它的漏洞编号吧。CVE-2015-1635(MS15-034)而HTTP.SYS是一个位于Win2003和WinXPSP2中的操作系统核心组件,能够让任何应用程序通过它提供的接口,以http协议进行信息通

  • 字符串矩阵 matlab(matlab 字符串矩阵)

    这里字符串矩阵(或者有更标准的名称?)是指一个矩阵中的每个元素为changdua

  • pycharm中tensorflow配置环境_python3.6安装tensorflow

    pycharm中tensorflow配置环境_python3.6安装tensorflowpython版本:python3.6.4tensorflow版本:tensorflow2.4.0(CPU版)pycharm版本:pycharm2020.1python版本和tensorflow版本需要保证一定的对应关系,否则会在使用的时候出现问题,具体对应关系参见网站:https://tensorflow.google.cn/install/source#gpu如图,下面还有GPU版本的对应关系,可以自行查找。一、Python安装python官网:https://ww

  • 常用打包软件总结_打包工作总结

    常用打包软件总结_打包工作总结在一年多的VB、VC编写过程中,使用打包软件先总结下,以防以后

    2022年10月23日
  • Android 4.4 Kitkat 使能 USB adb 功能

    Android 4.4 Kitkat 使能 USB adb 功能

  • 机器学习的分类与主要算法对比[通俗易懂]

    机器学习的分类与主要算法对比[通俗易懂]机器学习的分类与主要算法对比重要引用:AndrewNgCoureraMachineLearning;从机器学习谈起;关于机器学习的讨论;机器学习常见算法分类汇总;LeNetHomepage;pluskidsvm  首先让我们瞻仰一下当今机器学习领域的执牛耳者:  这幅图上的三人是当今机器学习界的执牛耳者。中间的是GeoffreyHinton,加拿大多伦多大学的教授,如今被聘为“Goo

发表回复

您的电子邮箱地址不会被公开。

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